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
sql 参数化查询问题的更多相关文章
- SQL参数化查询自动生成SqlParameter列表
string sql = @"INSERT INTO stu VALUES (@id,@name) "; 参数化查询是经常用到的,它可以有效防止SQL注入.但是需要手动去匹配参数@ ...
- SQL 参数化查询 应用于 Like
在sql 进行参数化查询的时候,使用like 语句和参数的时候,错误的写法: Participant like '%@Participant%' ,这样在数据库为解析为 '%'participant ...
- SQL参数化查询--最有效可预防SQL注入攻击的防御方式
参数化查询(Parameterized Query 或 Parameterized Statement)是访问数据库时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值. 在使用参 ...
- SQL参数化查询的问题
最近碰到个问题, SQL语句中的 "... like '%@strKeyword%'"这样写查不出结果, 非的写成 "... like '%" + strKey ...
- sql 参数化查询
在初次接触sql时,笔者使用的是通过字符串拼接的方法来进行sql查询,但这种方法有很多弊端 其中最为明显的便是导致了sql注入. 通过特殊字符的书写,可以使得原本正常的语句在sql数据库里可编译, ...
- SQL参数化查询
参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) ...
- mybatis的sql参数化查询
我们使用jdbc操作数据库的时候,都习惯性地使用参数化的sql与数据库交互.因为参数化的sql有两大有点,其一,防止sql注入:其二,提高sql的执行性能(同一个connection共用一个的sql编 ...
- sql参数化查询避免注入漏洞的原因探析
网上其他同学的都说是重用执行计划,将用户输入的作为文本查询,到底如何实现,我用下面三行代码来解析一下. DECLARE @test NVARCHAR() SET @test=' or 1='1 SEL ...
- sql参数化查询in的参数
private Query setParameter(Query query, Map<String, Object> map) { if (map != null) { Set<S ...
随机推荐
- 反编译python打包的exe文件
目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...
- 微信小程序开发工具中快捷键
微信小程序开发工具表面上是没有更多的样式类的工具,例如缩进.隐藏代码什么的. 现在总结一下小程序开发工具常用的一些快捷键: 格式调整 Ctrl+S:保存文件Ctrl+[, Ctrl+]:代码行缩进Ct ...
- C#等同于正则表达式的写法
不用写正则表达式,用C#自带的方法 用char 自带的函数实现 /// <summary> /// 只能由数字和大小写字母组成 /// </summary> /// <p ...
- 分享我在 vue 项目中关于 api 请求的一些实现及项目框架
本文主要简单分享以下四点 如何使用 axios 如何隔离配置 如何模拟数据 分享自己的项目框架 本文主要目的为以下三点 希望能够帮到一些人 希望能够得到一些建议 奉上一个使用Vue的模板框架 我只是把 ...
- emWin酿造机过程演示,含uCOS-III和FreeRTOS两个版本
第2期:酿造机过程演示 配套例子:V6-902_STemWin提高篇实验_酿造机过程演示(uCOS-III)V6-903_STemWin提高篇实验_酿造机过程演示(FreeRTOS) 例程下载地址:h ...
- MySQL 数据库最优化设计原则
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过10 ...
- [Swift]LeetCode26. 删除排序数组中的重复项 | Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once an ...
- [Swift]LeetCode95. 不同的二叉搜索树 II | Unique Binary Search Trees II
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...
- [Swift]LeetCode179. 最大数 | Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. Example ...
- [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest
In a forest, each rabbit has some color. Some subset of rabbits (possibly all of them) tell you how ...