[英]how to get varchar as byte[] using DataReader in Ado.Net?
如何使用Ado.Net中的DataReader将varchar作为byte []数据获取? 我们已经尝试了以下代码。
if (!objDataReader.IsDBNull(i))
{
long len = objDataReader.GetBytes(i, 0, null, 0, 0);
byte[] buffer = new byte[len];
objDataReader.GetBytes(i, 0, buffer, 0, (int)len);
}
但是上面的代码给出了错误(“无法将类型为'System.String'的对象强制转换为类型为'System.Byte []'。”)
更新:
当列的值为null且我删除dbnull条件时,执行以下代码行将出现错误:“无法将类型为'System.DBNull'的对象转换为类型为'System.Byte []”
long len = objDataReader.GetBytes(i, 0, null, 0, 0);
byte[] buffer = new byte[len];
objDataReader.GetBytes(i, 0, buffer, 0, (int)len);
varchar
字段应存储文本 ,而不是原始字节。 如果要存储不透明的二进制数据,请使用image
或binary
。
如果要获取表示特定编码中某些文本的字节,则可以使用Encoding.GetBytes
但您需要指定编码,例如Encoding.UTF8.GetBytes(text)
。 但是,这可能不是数据库中的表示方式。 关键是它是文本数据,因此,只要您可以准确地再现Unicode字符串,确切的二进制表示形式就无关紧要。
您在此字段中存储什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.