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

 

posted @   hao_1234_1234  阅读(1646)  评论(2编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示