MySqlDataReader.GetBytes
本文关键字:GetBytes MySqlDataReader | 更新日期: 2023-09-27 18:16:14
我对MySqlDataReader.GetBytes
有一点问题,引用列序数
ID - Primary, int, not null, auto_increment
TNode - , not null
Packet - longblob
Timestamp - timestamp
如果我运行以下查询:
SELECT * FROM table WHERE TNode = 2;
并尝试使用以下方法获取longblob的大小:
while (reader.Read())
{
long l = reader.GetBytes(2,0,null,0,0);
}
我将收到以下错误:
GetBytes只能在二进制或guid列上调用
列索引2为。即使像预期的那样遍历所有列,也会收到相同的错误。但是如果我运行以下查询:
SELECT Packet, ID, Timestamp FROM table WHERE TNode = 2;
紧随其后:
while (reader.Read())
{
long l = reader.GetBytes(0, 0, null, 0, 0);
}
没有问题。我能够得到长blob的长度,并做我需要做的事情。
关于为什么不允许我使用非零列索引的任何想法?
谢谢。
不确定MySQL,但在SQL Server中SELECT *可能不会按您期望的顺序返回列。它可能不是第二列。实际上,如果更改表并继续使用SELECT *,可能会引入一个难以发现的错误。我建议按照您在测试中所做的那样指定列。