数据库里有个字段的数据类型是varbinary(max),我用这样的方法读取数据:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(str_select, conn);
da.Fill(ds, "tablename");
ds.Tables["tablename"].Rows[0][2]
最后一行返回的是object类型的,如果我想将它转为二进制的应该怎么办,求代码,在线等!

解决方案 »

  1.   

    byte[]  b  =   System.Text.Encoding.Unicode.GetBytes(ds.Tables["tablename"].Rows[0][2].tostring())
      

  2.   

    我之前也是这样做的,如果数据库里面存的是01001,你先把它转化成了string类型的01001,再把它转成二进制,那岂不是把这个“01001”这个字符串给二进制了(我的意思就是得到的分别是0的二进制+1的二进制+0的二进制+0的二进制+1的二进制),而不是我要的01001按照字面的数字直接二进制啊。
      

  3.   

    我之前也是这样做的,如果数据库里面存的是01001,你先把它转化成了string类型的01001,再把它转成二进制,那岂不是把这个“01001”这个字符串给二进制了(我的意思就是得到的分别是0的二进制+1的二进制+0的二进制+0的二进制+1的二进制),而不是我要的01001按照字面的数字直接二进制啊。
      

  4.   

    我之前也是这样做的,如果数据库里面存的是01001,你先把它转化成了string类型的01001,再把它转成二进制,那岂不是把这个“01001”这个字符串给二进制了(我的意思就是得到的分别是0的二进制+1的二进制+0的二进制+0的二进制+1的二进制),而不是我要的01001按照字面的数字直接二进制啊
      

  5.   

    byte[] bytes = (byte[])Rows[0][2]
      

  6.   

    这样做又遇到问题了,因为数据库里面有NULL,这样会有错误
      

  7.   

    那你判断是否为null,不为null,就可以强制转换
      

  8.   


    你自己就应该预先说出NULL应该返回什么,不然别人不会乱“帮”你的。给你胡乱写一个,例如:byte[] value= Rows[0][2]==DBNull.Value?null:(byte[])Rows[0][2];