sql 参数化查询问题


 

一、正确案例

string name=“梅”;

string sql="select * from test where  Name  like @Name";

//包含 梅
SqlParameter par=new SqlParameter("@Name","%"+name+"%");

// 以 梅 开头

SqlParameter par=new SqlParameter("@Name", name+"%");

// 以 梅 结尾

SqlParameter par=new SqlParameter("@Name", "%"+name);

 

二 错误案例  

string name=“梅”;

// 多加 单引号 ‘’ ,@Name 被识别为字符串而不是参数。

string sql="select * from test where  Name  like  '@Name' ";

SqlParameter par=new SqlParameter("@Name","%"+name+"%");

//相同错误变种1

string sql="select * from test where  Name  like  '%@Name%' ";

SqlParameter par=new SqlParameter("@Name", name);

//相同 错误变种2

string sql="select * from test where  Name  like   ' %" + "@Name"+"%'  ";

SqlParameter par=new SqlParameter("@Name", name);

主要是对单引号的理解错误。 参数化查询中对字符串类型会自动处理,不需要手动添加单引号。

 

三 一种可行,但没有用到参数化查询的方法

// sql 简单拼接(存在sql注入攻击的风险)

string name=“梅”;

string sql="select * from test where  Name  like   ' %" + name+ "%'  ";

 

 四、动漫化:

我仿佛听到动漫人物“字符串”: 讨厌,人家是自带胸器(单引号)的啦!

配乐响起:just 地雷,just 地雷,地雷 ~地雷~ 

 

参考来源:https://bbs.csdn.net/topics/100119798

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM