我对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);
} 我将收到以下错误:
只能在二进制或guid列上调用GetBytes。
列索引2是。即使我像预期的那样遍历所有列,我也会收到相同的错误。但是,如果我运行以下查询:
SELECT Packet, ID, Timestamp FROM table WHERE TNode = 2;其次是:
while (reader.Read())
{
long l = reader.GetBytes(0, 0, null, 0, 0);
} 没问题。我能够得到长水滴的长度,并做我需要做的事情。
对于为什么不允许我使用非零列索引,有什么想法吗?
谢谢。
发布于 2013-05-31 18:46:17
不确定MySQL,但在Server中SELECT *可能不会按您预期的顺序返回列。实际上,如果您更改表并继续使用SELECT *,您可能会引入一个难以查找的错误。我建议像在测试中那样指定列。
https://stackoverflow.com/questions/16863795
复制相似问题