我正在使用OleDbDataReader rdr
将BLOB格式的“注释”字段(子类型1段大小80)读入Interbase数据库的字符串中,并且我不断获得异常。有什么建议吗?
尝试#1
ls_Chap_Comments.Add((rdr["Comments"]).ToString());
InvalidCastException:由于符号不匹配或数据溢出以外的原因,无法转换数据值。例如,数据在数据存储中已损坏,但该行仍可检索。“
尝试#2
byte[] b = new byte[100];
b = (byte[])rdr["Comments"];
string s = System.Text.ASCIIEncoding.ASCII.GetString(b);
InvalidCastException:无法将类型为System.String
的对象强制转换为System.Byte[]
尝试#3
// 17 is the BLOB column zero-based location for "Comments"
retval = rdr.GetBytes(17, startIndex, outbyte, 0, bufferSize);
InvalidCastException:无法将System.String
类型的对象强制转换为System.Byte[]
类型。
任何建议都会非常感激!
答案 0 :(得分:0)
你应该致电
rdr.IsDBNull(rdr.GetOrdinal("Comments"))
在尝试读取值之前。
答案 1 :(得分:0)
我一直在寻找这个问题的答案,但这并不像看起来那么困难。 将值作为对象类型检索并将其强制转换为字符串(假设blob包含字符串)。
string commentsValue = (string)rdr.GetValue(17);