plsql变量参数化_Dapper参数化查询使用实例

本文展示了如何在C#中使用Dapper进行Oracle数据库的参数化查询,包括查询、执行SQL以及调用存储过程。通过DapperHelper类,可以方便地创建连接并执行各种操作,例如:DapperHelper.Query、DapperHelper.Execute和DapperHelper.ExecuteSP。
摘要由CSDN通过智能技术生成

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingJetSun.Infrastructure;usingJetSun.Infrastructure.Advanced;usingJetSun.Infrastructure.ServiceModel;usingDapper;usingSystem.Data.Common;usingSystem.Data;usingOracle.ManagedDataAccess.Client;namespaceJetSun.Infrastructure.Advanced

{public static classDapperHelper

{public staticDbConnection CrateConnection(Dbs dbs)

{

ServerContext sc=WcfServiceHelper.CreateServerContext(ClientContext.Instance);

DbsSetting ds=sc.GetDbsSetting(dbs);

DbConnection connection= null;if (ds.Provider ==DbsProvider.MsSql)

connection= newSystem.Data.SqlClient.SqlConnection(ds.CurrentConnectionString);else if (ds.Provider ==DbsProvider.Oracle)

connection= newOracle.ManagedDataAccess.Client.OracleConnection(ds.CurrentConnectionString);else

throw new Exception(string.Format("不支持的数据库类型{0}", ds.Provider.ToString()));

connection.Open();returnconnection;

}///

///用Dapper查询数据库。多Dapper功能请使用Dapper.SqlMapper类。///例:///Query<DtoEmployee>(Dbs.His,"select * from role.Employee where EmployeeId=:id", new { id = 100 });///Query<int>(Dbs.His,"select EmployeeId from role.Employee where PersonId=:id", new { id = 100 });///

public static IEnumerable Query(Dbs dbs, String sql, object param = null)

{using (DbConnection cnn =CrateConnection(dbs))

{return Query(cnn, sql, param);

}

}///

///用Dapper查询数据库。更多Dapper功能请使用Dapper.SqlMapper类。///例:///using (DbConnection cnn = DapperHelper.CrateConnection(Dbs.His))///{///Query<DtoEmployee>(cnn,"select * from role.Employee where EmployeeId=:id", new { id = 100 }).ToList();///Query<int>(cnn,"select EmployeeId from role.Employee where PersonId=:id", new { id = 100 }).ToList();///}///

public static IEnumerable Query(DbConnection cnn, String sql, object param = null, int commandTimeout = 60)

{return cnn.Query(sql, param, null, true, commandTimeout);

}///

///用Dapper执行sql。更多Dapper功能请使用Dapper.SqlMapper类。///例:///using (DbConnection cnn = DapperHelper.CrateConnection(Dbs.His))///{///Execute(cnn,"Update role.Employee set isdeleted=0 where EmployeeId=100");///

///dto = new DtoEmployee { Name = "testName11", Code = "testCode11" };///int rs=DapperHelper.Execute(cn, "Update role.Employee set name=:name, code=:code where EmployeeId=4804", dto);//自动从dto中读取同名属性赋值///}///

public static int Execute(this IDbConnection cnn, string sql, object param = null, int commandTimeout = 60)

{return Dapper.SqlMapper.Execute(cnn, sql, param, null, commandTimeout);

}///

///用Dapper执行sql。更多Dapper功能请使用Dapper.SqlMapper类。///例:///using (DbConnection cnn = DapperHelper.CrateConnection(Dbs.His))///{///ExecuteSP(cnn,"role.TestSp",new { p1 = "testName2", p2 = "testcode2" } ); //p1 p2为存储过程role.TestSp的参数///}///

///

///

///

///

///

public static int ExecuteSP(this IDbConnection cnn, string spName, object param = null, int commandTimeout = 60)

{return Dapper.SqlMapper.Execute(cnn, spName, param, null, commandTimeout, System.Data.CommandType.StoredProcedure);

}public static IList ExecuteSP(IDbConnection cnn, string spName, OracleDynamicParameters param = null, int commandTimeout = 60) where T : class{return Dapper.SqlMapper.Query(cnn, spName, param, null, true, commandTimeout, CommandType.StoredProcedure).ToList();

}

}public classOracleDynamicParameters : SqlMapper.IDynamicParameters

{private readonly DynamicParameters _dynamicParameters = newDynamicParameters();private readonly List _oracleParameters = new List();public void Add(string name, object value = null, DbType dbType = DbType.AnsiString, ParameterDirection? direction = null, int? size = null)

{

_dynamicParameters.Add(name, value, dbType, direction, size);

}public void Add(stringname, OracleDbType oracleDbType, ParameterDirection direction)

{var oracleParameter = new OracleParameter(name, oracleDbType) { Direction =direction };

_oracleParameters.Add(oracleParameter);

}public void Add(string name, OracleDbType oracleDbType, intsize, ParameterDirection direction)

{var oracleParameter = new OracleParameter(name, oracleDbType, size) { Direction =direction };

_oracleParameters.Add(oracleParameter);

}public voidAddParameters(IDbCommand command, SqlMapper.Identity identity)

{

((SqlMapper.IDynamicParameters)_dynamicParameters).AddParameters(command, identity);var oracleCommand = command asOracleCommand;if (oracleCommand != null)

{

oracleCommand.Parameters.AddRange(_oracleParameters.ToArray());

}

}public T Get(stringparameterName)

{return Parse(_oracleParameters.SingleOrDefault(t => t.ParameterName ==parameterName));//if (parameter != null)//return (T)Convert.ChangeType(parameter.Value, typeof(T));//return default(T);

}public T Get(intindex)

{return Parse(_oracleParameters[index]);//if (parameter != null)//return (T)Convert.ChangeType(parameter.Value, typeof(T));//return default(T);

}private T Parse(OracleParameter parameter)

{if (parameter.IsNull()) return default(T);try { return (T)Convert.ChangeType(parameter.Value, typeof(T)); }catch { return TypeHelper.ConvertTo(parameter.Value.ToString()); }

}

}public sealed classDbString

{public DbString() { Length = -1; }public bool IsAnsi { get; set; }public bool IsFixedLength { get; set; }public int Length { get; set; }public string Value { get; set; }public void AddParameter(IDbCommand command, stringname)

{if (IsFixedLength && Length == -1)

{throw new InvalidOperationException("If specifying IsFixedLength, a Length must also be specified");

}var param =command.CreateParameter();

param.ParameterName=name;

param.Value= (object)Value ??DBNull.Value;if (Length == -1 && Value != null && Value.Length <= 4000)

{

param.Size= 4000;

}else{

param.Size=Length;

}

param.DbType= IsAnsi ? (IsFixedLength ? DbType.AnsiStringFixedLength : DbType.AnsiString) : (IsFixedLength ?DbType.StringFixedLength : DbType.String);

command.Parameters.Add(param);

}

}

}

### 回答1: PL/SQL Developer是一款适用于Oracle数据库开发和管理的工具,它提供了丰富、高效的程序开发环境,支持快速开发和维护PL/SQL代码。此版本为PL/SQL Developer的第15个版本,支持64位的操作系统。在使用PL/SQL Developer进行开发时,可以通过它的多种功能提高开发的效率和质量,如代码自动完成、可视化调试、代码审计等,在开发和维护大型、复杂的应用程序时尤为实用。此外,PL/SQL Developer还支持多国语言,方便了不同国家的开发者进行使用。总之,PL/SQL Developer是一款强大而实用的Oracle数据库开发工具,能够使开发者更加轻松地进行PL/SQL程序设计和调试。 ### 回答2: PL/SQL Developer是一款功能强大、易于使用的集成开发环境(IDE),专门用于开发Oracle数据库应用程序,并支持64位系统。它支持在一个IDE中同时编辑、编译、调试和运行PL/SQL代码,提供了代码自动完成、语法高亮、代码折叠、版本控制等功能,让编写PL/SQL代码变得更加高效、快捷。 PL/SQL Developer还拥有强大的调试功能,可以逐行调试代码、设置断点、查看变量的值等,帮助开发人员快速定位和解决问题。同时它也支持SQL语句的编写和调试,方便开发人员进行SQL优化。 总之,PL/SQL Developer是一款强大的工具,既适用于初学者,也能够满足专业开发人员的需求,是开发Oracle数据库应用程序的不二之选。而64位支持让它可以更好地发挥性能优势,提高开发效率。 ### 回答3: PL/SQL Developer是一款针对Oracle数据库的存储过程和SQL语句编辑器。plsqldev_15_64位则是指PL/SQL Developer的版本号为15,且是64位系统的可执行文件。 PL/SQL Developer的最新版为21.0.1.2513,可支持Windows、Linux、Mac OS等多种操作系统。该软件提供了强大的编辑、调试、优化等功能,可用于编写、测试、调试Oracle数据库中的存储过程、触发器、函数等代码。同时,它还内置了许多实用的工具,如SQL解析器、依赖分析器、代码差异对比器等,方便开发人员提高开发效率。 plsqldev_15_64位版本是PL/SQL Developer 15的一个子版本,适用于运行在64位系统的电脑上。该版本相较于32位版本在访问内存等方面拥有更高的优势,能够更好地提高软件的稳定性和性能,计算机运行速度更快。 总之,PL/SQL Developer是一款强大的Oracle数据库开发工具,而plsqldev_15_64位版本则是其适用于64位系统的版本,可提供更好的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值