如何使用Ado.Net中的DataReader将varchar作为byte []?

时间:2010-03-31 13:31:07

标签: c# string

如何使用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);

1 个答案:

答案 0 :(得分:5)

varchar字段应该存储 text ,而不是原始字节。如果要存储不透明的二进制数据,请使用imagebinary

如果您想获得表示特定编码中某些文字的字节,可以使用Encoding.GetBytes - 但您需要指定编码,例如Encoding.UTF8.GetBytes(text)。但是,这可能不是它在数据库中的表示方式。关键在于它是文本数据,因此只要您可以准确地重现Unicode字符串,精确的二进制表示就无所谓了。

你在这个领域存储了什么?