加密后的数据 char[] 类型那个保存到binrary的字段中?

WantD 2013-06-22 11:35:17
比如说有个表
下载数据的时候用到了 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);
会不会有问题?
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-06-23
  • 打赏
  • 举报
回复
引用 1 楼 u010936098 的回复:
建议用参数

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注入
答非所问啊
橡木疙瘩 2013-06-23
  • 打赏
  • 举报
回复
建议用参数

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注入
rayyu1989 2013-06-23
  • 打赏
  • 举报
回复
pw 为什么是char8呢 如果是md5 本来就是二进制数据啊 你格式化成char 再 转成二进制存?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧