C# 是否从SqlDataReader获取字节[]?

C# 是否从SqlDataReader获取字节[]?,c#,asp.net,sql,bytearray,C#,Asp.net,Sql,Bytearray,我有一个带有varbinary(MAX)参数的表。执行查询后,我将结果存储在SqlDataReader中,因为它有多个列作为输出 SqlCommand cmd = new SqlCommand("select leave_details from LeaveTable"); SqlDataReader obj; con.Open(); obj = cmd.ExecuteReader(); 现在我想把每一行的结果转换成字节[] 这个坏了:: byte[] b=null; obj.GetBytes

我有一个带有varbinary(MAX)参数的表。执行查询后,我将结果存储在SqlDataReader中,因为它有多个列作为输出

SqlCommand cmd = new SqlCommand("select leave_details from LeaveTable");
SqlDataReader obj;
con.Open();
obj = cmd.ExecuteReader();
现在我想把每一行的结果转换成字节[]

这个坏了::

byte[] b=null;
obj.GetBytes(0,0,b,0,1024);
尝试
GetValue()
方法

byte[] b=null;
b=(byte [])obj.GetValue(0);
//OR
b=(byte [])obj[0];
string bytesfromsql=“01010101010110010111010001”//例如
byte[]bytes=新字节[bytesfromsql.Length];
对于(int i=0;i
什么意思是“这个不起作用”?你得到的是异常、错误的结果还是bsod?@TimSchmelter:他试图使用的API调用显然是错误的。我不明白它为什么会存在,因为使用它的另一个必要API(获取二进制blob的长度)完全丢失了。从SQL返回的字节不是字符串。另外:即使是,您也必须使用
Convert.ToByte(string,int)
来指定基数(是base-2?base-10?base-16?),并且在大多数情况下:字符串的长度不是解码字节的长度[];在base-16的情况下,它将是输入字符串长度的一半——例如
string bytesfromsql = "01010101010110010111010001"; //for example
byte[] bytes = new byte[bytesfromsql.Length];
for (int i = 0; i < bytes.Count(); i++)
{
   bytes[i] = byte.Parse(bytesfromsql[i].ToString());
}