日期:2014-05-19  浏览次数:20606 次

这个代码和那个代码有什么区别???
这个代码和那个代码有什么区别???
----------------------
代码一:
string   strSel2   =   "select   *   from   qz   where   qz_id=@Id ";
SqlCommand   myCommand   =   new   SqlCommand(strSel2,MyConnection);
myCommand.Parameters.Add(new   SqlParameter( "@Id ",11));
myCommand.Parameters[ "@Id "].Value   =   Request.QueryString[ "qz_id "];
==============================================
代码二:
string   strSel2   =   "select   *   from   qz   where   qz_id= ' "+Request.QueryString[ "qz_id "]+ " ' ";
SqlCommand   myCommand   =   new   SqlCommand(strSel2,MyConnection);
====================================
这两个代码效果一样,哪种好些???

------解决方案--------------------
代码一用到了SQL参数绑定, 这样的SQL语句可以使用危险字符, 如单引号, 逗号等.
代码二则没有, 如果参数是Request.QueryString[ "qz_id "] = "xxx ', 'xxx 'xmmc, "象这样的就会引起执行SQL错误, 第一种就可以正常执行, 你可以试试
------解决方案--------------------
第一种数据类型安全,又防SQL注入

第二种拼接字符串很不可取
------解决方案--------------------
第一种是用的是存储过程,第二种用的是sql语句;
第一种快而且安全