string MyName = "12122";
byte[] s = new byte[200];string sql = "INSERT INTO Sends(name,Data) VALUES('"+ MyName +"', "+ s +")";这个语句有问题,请教正确的应该怎么写?谢谢

解决方案 »

  1.   

    数据库试SQL2000, Data字段为varbinary类型
      

  2.   

    看你数据库中data这个字段的类型是什么
    show me the error
      

  3.   

    string sql = "INSERT INTO Sends(name,Data) VALUES(@name, @date)";
    System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection("连接字符串");
                System.Data.SqlClient.SqlCommand cm = new System.Data.SqlClient.SqlCommand();
                cm.Connection = cnn;
     cm.CommandText = sql;
                
                cm.Parameters.Add("@name",SqlDbType.VarChar);
                cm.Parameters["@name"].Value = MyName;
                cm.Parameters.Add("@date",SqlDbType.VarBinary);
                cm.Parameters["@date"].Value = s;
                cnn.Open();
                cm.ExecuteNonQuery();
                cnn.Close();
      

  4.   

    不能就这样直接拼字符串~~~
    string sql = "INSERT INTO Sends(name,Data) VALUES('"+ MyName +"', "+ s +")";Parameter的方式操作ado.net才是正道!~~~
      

  5.   

    string MyName = "12122";
    byte[] s = new byte[200];
    string strs = Encoding.Default.GetString(s);
    string sql = "INSERT INTO Sends(name,Data) VALUES('"+ MyName +"', convert(varbinary,"+ strs +"))";
    将byte[]转换为string, 然后在sql中再将其转换为varbinary。或者采用Parameter
      

  6.   

    虽然lz已经结贴,并且肯定了lovvver(EBright软件) 的答案不过偶仍然要指出,他提供的方法是有问题的,发生在应用服务器与数据库服务器不同并采用编码方式不同的情况下
      

  7.   

    并且,Encoding.Default.GetString()方法也有可能会造成字节的丢失~
      

  8.   

    的确是存在这个问题,最好的办法,还是用SqlParameter较好。
      

  9.   

    直接构造sql语句本来就不是好的做法。
    如果我做,也会选择Eddie005(♂) №.零零伍 (♂) 老兄的做法。