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

Kri*_*hna 1 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);

                  }
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)

Jon*_*eet 5

一个varchar字段应该是存储文本,而不是原始字节.如果要存储不透明的二进制数据,请使用image或binary.

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

你在这个领域存储什么?