繁体   English   中英

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

[英]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字段应存储文本 ,而不是原始字节。 如果要存储不透明的二进制数据,请使用imagebinary

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

您在此字段中存储什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM