dapper mysql 多参数查询_使用Dapper进行参数化查询

本文介绍如何在Dapper中使用DynamicParameters进行参数化查询,以提高安全性并防止SQL注入。示例代码展示了如何在删除操作中使用动态参数,同时讨论了SQL参数化查询在不同场景下的执行效率和实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Dapper操作Mysql数据库中我介绍了使用dapper进行CURD基本操作,但在示例代码中参数虽然也是通过@开头,但其实不是真正意义的参数化查询,而是拼接sql,这种方式不利于防止sql注入,所以在Dappe中可以使用DynamicParameters动态参数集合添加参数,从而实现dapper下的参数化查询;

示例代码

using (var connection = new MySqlConnection(connstr))

{

//声明动态参数

DynamicParameters Parameters = new DynamicParameters();

//开始事务

IDbTransaction transaction = connection.BeginTransaction();

try

{

;

string sQuery = "Delete FROM user " + "WHERE User_Id=@Id";

//添加参数

Parameters.Add("Id", id);

connection.Execute(sQuery, Parameters, transaction, null, null);

//提交事务

transaction.Commit();

return true;

}

catch (Exception ex)

{

//出现异常,事务Rollback

transaction.Rollback();

return false;

throw new Exception(ex.Message);

}

}

SQL 语句在查询分析器执行很快,程序 Dapper 参数化查询就很慢(parameter-sniffing)

这个问题困扰我好长时间了,使用SQLSERVER 事务探查器找到执行超时的SQL语句,参数查询都是通过执行exe sp_executesql 的存储过程调用,因为它能够分析并缓存查询计划,从而优化查询 ...

SQL参数化查询自动生成SqlParameter列表

string sql = @"INSERT INTO stu VALUES (@id,@name) "; 参数化查询是经常用到的,它可以有效防止SQL注入.但是需要手动去匹配参数@ ...

Sql Server参数化查询之where in和like实现详解

where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (Sql ...

【转】浅析Sql Server参数化查询

转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/21/2460978.html 错误认识1.不需要防止sql注入的地方无需参数化 参数化查询就 ...

【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参

转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...

【转】Sql Server参数化查询之where in和like实现详解

转载至:http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARINDE ...

Oracle参数化查询

Oracle参数化查询默认是根据顺序绑定的 select * from table where name=:p1 and (select id from table2 where name=:p1); ...

SQL 参数化查询 应用于 Like

在sql 进行参数化查询的时候,使用like 语句和参数的时候,错误的写法:  Participant like '%@Participant%' ,这样在数据库为解析为 '%'participant ...

ACCESS的参数化查询

看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享希望对大 ...

随机推荐

一、PBNI环境搭建及初步使用

PowerBuilder Native Interface(PowerBuilder本机接口PBNI)允许将第3方程序转换为PowerBuilder对象,供PowerBuilder直接使用,也允许将P ...

Unity 中实现粒子系统的 LOD

模型的 LOD 比较简单,直接使用 Unity 提供的组件 LODGroup 挂到模型物体上,然后分别指定不同 LOD 级别的 Renderer 即可. LODGroup 并不是用距离来控制 LOD, ...

day_6.20动态加载py文件

__import__() 魔法方法! 关于动态网站打开的  代码流程!

python 中 try ...except

捕捉异常 try: 下的代码段 即为 需要捕捉异常的代码段: except:  捕获某一模块的异常,须带异常模块名称,可带原因参数:except 下代码为该异常发生时,所执行的代码:一个try可对应多 ...

Variational Inference

作者:孙九爷链接:https://www.zhihu.com/question/41765860/answer/101915528来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

通过iLO进行Zabbix监控——针对HP服务器集成

iLO 全名是 Integrated Lights-out,它是惠普某些型号的服务器上集成的远程管理端口,它能够允许用户基于不同的操作系统从远端管理服务器,实现了虚拟存在和控制,从而进行智能型基础构架 ...

关于static关键字

static用于修饰成员(成员变量,成员函数),不能修饰局部变量被修饰的变量和函数是静态的,可被多个对象共享,节省内存可以直接被类名调用++++++++++++++++++++++++++++++++ ...

Eclipse使用maven创建struct2项目及遇到的各种坑

参考创建教程:http://www.jb51.net/article/45138.htm   坑一: Eclipse创建maven项目报错:Could not resolve archetype or ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值