我在binary的字段存储了用户的密码MD5加密串,我在SQL的查询分析器里面查询的结果就是0x9876543210.......这种格式的东西 
可是我用vb.net写的代码就始终取不出那字段的加密串,我希望能一模一样的取出0x9876543210....这种字符串出来
        sql = "select name,cast(passwd as varchar) from users"
        SqlCmd1.CommandText = sql
        SqlRd = SqlCmd1.ExecuteReader()
        SqlRd.Read()        MessageBox.Show(SqlRd(1))passwd就是保存用户密码MD5加密串的字段
messagebox出来的是乱码,如同把passwd从binary字段修改为varchar在数据库里面看到的效果 
请问如何实现正确提取加密串0x9876543210....出来,谢谢!   
不限制具体代码,C#代码,VB.NET代码均可

解决方案 »

  1.   

    你这里的字段属性是否配置的二进制类型
    应该直接将字段改成varchar型,再保存的数据读出来就没问题了如果实在要这样读,你读出来后用
    encoding.ascii.getstring("")
      

  2.   

    SqlConnection con = new SqlConnection("Server=XXX;uid=<username>;pwd=<strong password>;database=northwind");
    SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con);
    SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
    DataSet ds = new DataSet("MyImages");byte[] MyData= new byte[0];

    da.Fill(ds, "MyImages");
    DataRow myRow = ds.Tables["MyImages"].Rows[0];
               
    MyData =(byte[])myRow["imgField"];string v = UnicodeEncoding.Default.GetString(MyData);
      

  3.   

    补充一下,如果你想输出0x9820329023.
    直接MyData.ToString()就行了.
      

  4.   

            sql = "select name, passwd from users"
            SqlCmd1.CommandText = sql
            SqlRd = SqlCmd1.ExecuteReader()
            SqlRd.Read()        strint s = BitConverter.ToString((byte[])(SqlRd(1)));
            s = "0x" + s.Replace('-', '');
            MessageBox.Show(s);
      

  5.   

    更正一下,应该是:
            s = "0x" + s.Replace("-", "");
      

  6.   

            string s = BitConverter.ToString((byte[])(SqlRd(1)));
            s = "0x" + s.Replace("-", "");
      

  7.   

    TO: rainxy2000PS: MYDATA.TOstring()是有问题的吧
    我刚测试了下,messagebox出来的文字是system.byte[]
      

  8.   

    UnicodeEncoding.Default.GetString处理以后的messagebox信息是乱码
    记录是别人的java程序调用存储过程写入的,我也不知道它采用什么编码写的,如何解码一直灭有找到好的办法……郁闷中,难道只能猜测尝试?
      

  9.   

    注意是sql是 "select name, passwd from users"
    不是  "select name,cast(passwd as varchar) from users"        sql = "select name, passwd from users"
            SqlCmd1.CommandText = sql
            SqlRd = SqlCmd1.ExecuteReader()
            SqlRd.Read()        string s = BitConverter.ToString((byte[])(SqlRd(1)));
            s = "0x" + s.Replace("-", "");
            MessageBox.Show(s);
      

  10.   

    thx,给分,不想再深究了……累死了,这个破问题把偶弄心烦了
      

  11.   

    System.BitConverter.ToString()方法正合适,什么叫“不想再深究了”?
      

  12.   

    谢谢兄弟的指点,你的东西的确是正确的,(如果我灭有记错)不过我记得以前用某种语言写的程序
    里面就是用的如下SQL
    sql = "select name,cast(passwd as varchar) from users"然后直接就出来了0x987654321....根本就不需要转换了
    非常类似rainxy2000 兄弟说的MYDATA.TOstring()
    这样子就该出来了的就是不知道为什么现在死活就不成了呢