我正在使用OleDbDataReader rdr
将 BLOB 形式的"注释"字段(sub_type 1 段大小 80)读取到来自 Interbase DB 的字符串中,并且不断收到异常。有什么建议吗?
尝试 #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);
无效强制转换异常:无法将类型 System.String
的对象强制转换为类型 System.Byte[]
尝试 #3
// 17 is the BLOB column zero-based location for "Comments"
retval = rdr.GetBytes(17, startIndex, outbyte, 0, bufferSize);
无效强制转换异常:无法将类型 System.String
的对象强制转换为类型 System.Byte[]
。
任何建议将不胜感激!
你应该调用
rdr.IsDBNull(rdr.GetOrdinal("Comments"))
在尝试读取值之前。
在寻找答案,但这并不像看起来那么困难。将值作为对象类型检索,并将其强制转换为字符串(假设 Blob 包含字符串)。
string commentsValue = (string)rdr.GetValue(17);