c# oracle参数化查询,c# – 使用dapper进行动态参数化查询

我想用动态参数列表编写一个查询(取决于是否设置参数).

我想使用dapper在oracle数据库上执行查询.

示例代码:

var sqlParams = new List();

var sqlBuilder = new StringBuilder();

sqlBuilder.Append("SELECT * FROM EXAMPLE WHERE 1 = 1 ");

if (!string.IsNullOrEmpty(aParam))

{

sqlBuilder.Append(" AND A LIKE ?");

}

if (!string.IsNullOrEmpty(bParam))

{

sqlBuilder.Append(" AND B LIKE ? ");

}

var sql = sqlBuilder.ToString();

return this.Connection.Query(

sql,

new { aParam, bParam } // ??

).ToList();

最佳答案 Dapper只适用于命名参数.我似乎记得在oracle中它们是以冒号为前缀的,所以:

if (!string.IsNullOrEmpty(aParam))

{

sqlBuilder.Append(" AND A LIKE :aParam");

}

if (!string.IsNullOrEmpty(bParam))

{

sqlBuilder.Append(" AND B LIKE :bParam");

}

现在你现有的代码在这里:

return this.Connection.Query(

sql,

new { aParam, bParam }

).ToList();

应该管用. Dapper使用匿名类型成员的名称作为参数名称.它还包括一些非常基本的代码来检查sql中是否存在任何给定成员,因此如果你的sql只提到:bParam,它实际上不会将aParam值作为参数添加.

在更复杂的场景中,还有一个可以使用的DynamicParameters对象,其功能更像是一个字典 – 但你不需要这里.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
apper是一个轻量级的ORM框架,它可以帮助我们更方便地操作数据库。下面是使用Dapper进行数据库操作的示例代码: 首先,我们需要安装Dapper包。可以通过NuGet包管理器或者在项目中添加引用来完成安装。 ```csharp using System.Data.SqlClient; using Dapper; public class DapperHelper<T> { private volatile static DapperHelper<T> _instance = null; private static readonly object lockHelper = new object(); private DapperHelper() { } public static DapperHelper<T> Ins() { if (_instance == null) { lock (lockHelper) { if (_instance == null) { _instance = new DapperHelper<T>(); } } } return _instance; } private string connectionString = "Data Source=.;Initial Catalog=Test;Integrated Security=True"; public List<T> ExecutePro(string proc, object param) { using (SqlConnection con = new SqlConnection(connectionString)) { List<T> list = con.Query<T>( proc, param, null, true, null, CommandType.StoredProcedure).ToList(); return list; } } } ``` 上面的代码中,我们定义了一个DapperHelper类,用于封装Dapper的操作。其中,ExecutePro方法用于执行存储过程,并返回结果集。 使用Dapper进行数据库操作的步骤如下: 1.创建SqlConnection对象,指定连接字符串。 2.调用Query方法执行SQL语句或存储过程,并将结果集转换为List<T>类型。 下面是一个使用DapperHelper类执行存储过程的示例代码: ```csharp var helper = DapperHelper<MyModel>.Ins(); var list = helper.ExecutePro("GetMyModelList", new { Id = 1 }); ``` 上面的代码中,我们首先获取DapperHelper实例,然后调用ExecutePro方法执行存储过程,并将结果集转换为List<MyModel>类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值