如何使用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);
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码给出了错误("无法将'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);
Run Code Online (Sandbox Code Playgroud)
一个varchar字段应该是存储文本,而不是原始字节.如果要存储不透明的二进制数据,请使用image或binary.
如果要获取表示特定编码中某些文本的字节,可以使用Encoding.GetBytes- 但是您需要指定编码,例如Encoding.UTF8.GetBytes(text).但是,这可能不是它在数据库中的表示方式.关键在于它是文本数据,因此只要您可以准确地重现Unicode字符串,精确的二进制表示就无关紧要了.
你在这个领域存储什么?