加密后的数据 char[] 类型那个保存到binrary的字段中?
比如说有个表
下载数据的时候用到了 unhex() 函数
test
xm varchar(20),
pw binrary(16);
如何把加密后的pw(char[8]) update到数据中,
如果将char[8]转成 string s1;
string sql = string.Format("UPDATE testSET pw=hex('{0}') WHERE xm={1}",
s1 , name);
会不会有问题?
------解决方案--------------------建议用参数
string sql = "UPDATE test SET pw = @p_pw WHERE xm = @p_xm";
……
//在command执行前,假设用的是OleDb
updateCmd.Parameters.Add("@p_pw", OleDbType.Binary).Value = s1;
updateCmd.Parameters.Add("@p_xm", OleDbType.VarChar).Value = name;
updateCmd.ExecuteNonQuery();
使用参数把数据传给SQL的好处:
1:同一条SQL语句可以多次使用,第一次使用时Command对象会把它编译好,省去每次编译的时间。
2:避免处理不同数据库对各种类型常量的表示法不同的问题
3:任何文本都不需要转义
4:可以避免SQL注入