OracleHelper类
using System; using System.Configuration; using System.Data; using System.Collections; using Oracle.DataAccess.Client;namespace OracleHelper {/// <summary>///Oracle数据库操作帮助类/// </summary>public abstract class OracleHelper{//从配置文件中读取配置好的连接字符串public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["OraConnString1"].ConnectionString;public static readonly string ConnectionStringInventoryDistributedTransaction = ConfigurationManager.ConnectionStrings["OraConnString2"].ConnectionString;public static readonly string ConnectionStringOrderDistributedTransaction = ConfigurationManager.ConnectionStrings["OraConnString3"].ConnectionString;public static readonly string ConnectionStringProfile = ConfigurationManager.ConnectionStrings["OraProfileConnString"].ConnectionString;public static readonly string ConnectionStringMembership = ConfigurationManager.ConnectionStrings["OraMembershipConnString"].ConnectionString;//为缓存的参数创建一个hashtableprivate static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());/// <summary>/// 增删改操作使用此方法/// </summary>/// <param name="connString">连接字符串</param>/// <param name="cmdType">命令类型(sql语句或者存储过程)</param>/// <param name="cmdText">要执行的sql语句或者存储过程名称</param>/// <param name="commandParameters">执行所需的一些参数</param>/// <returns>返回受影响的行数</returns>public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();//创建一个OracleConnectionusing (OracleConnection connection = new OracleConnection(connectionString)){//调用静态方法PrepareCommand完成赋值操作PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);//执行命令返回int val = cmd.ExecuteNonQuery();//清空参数 cmd.Parameters.Clear();return val;}}/// <summary>/// 增删改操作使用此方法(需要一个存在的事务参数)/// </summary>/// <param name="trans">一个存在的事务</param>/// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns>返回受影响的行数</returns>public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();//调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);//执行命令返回int val = cmd.ExecuteNonQuery();//清空参数 cmd.Parameters.Clear();return val;}/// <summary>/// 增删改操作使用此方法(需要一个存在的连接)/// </summary> /// <param name="conn">一个存在的OracleConnection参数</param>/// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns>返回受影响的行数</returns>public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();//调用静态方法PrepareCommand完成赋值操作PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);//执行命令返回int val = cmd.ExecuteNonQuery();//清空参数 cmd.Parameters.Clear();return val;}/// <summary>/// 查询返回一个结果集/// </summary>/// <param name="connString">连接字符串</param>//// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns></returns>public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();// 创建一个OracleConnectionOracleConnection conn = new OracleConnection(connectionString);try{//调用静态方法PrepareCommand完成赋值操作PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);//执行查询OracleDataReader odr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//清空参数 cmd.Parameters.Clear();return odr;}catch{//如果发生异常,关闭连接,并且向上抛出异常 conn.Close();throw;}}/// <summary>/// 执行语句返回的是单行单列的结果 /// </summary>/// <param name="connectionString">连接字符串</param>/// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns>返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换</returns>public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();// 创建一个OracleConnectionusing (OracleConnection conn = new OracleConnection(connectionString)){//调用静态方法PrepareCommand完成赋值操作PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);//执行查询object val = cmd.ExecuteScalar();//清空参数 cmd.Parameters.Clear();return val;}}/// <summary>/// 执行语句返回的是单行单列的结果(有指定的事务参数)/// </summary>/// <param name="transaction">一个存在的事务参数</param>/// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns>返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换</returns>public static object ExecuteScalar(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter[] commandParameters){//如果传入的事务是空值,抛出异常if (transaction == null)throw new ArgumentNullException("transaction");//如果传入的事务无连接,抛出异常(无连接,说明传入的事务参数是已经提交过或者回滚了的事务)if (transaction != null && transaction.Connection == null)throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();//调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);//执行查询object retval = cmd.ExecuteScalar();//清空参数 cmd.Parameters.Clear();return retval;}/// <summary>/// 执行语句返回的是单行单列的结果(有指定的连接参数)/// </summary>/// <param name="conn">一个存在的连接参数</param>/// <param name="commandType">命令类型(sql或者存储过程)</param>/// <param name="commandText">sql语句或者存储过程名称</param>/// <param name="commandParameters">命令所需参数数组</param>/// <returns>返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换</returns>public static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters){// 创建一个OracleCommandOracleCommand cmd = new OracleCommand();//调用静态方法PrepareCommand完成赋值操作PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters);//执行查询object val = cmd.ExecuteScalar();//清空参数 cmd.Parameters.Clear();return val;}/// <summary>/// Add a set of parameters to the cached/// </summary>/// <param name="cacheKey">Key value to look up the parameters</param>/// <param name="commandParameters">Actual parameters to cached</param>public static void CacheParameters(string cacheKey, params OracleParameter[] commandParameters){parmCache[cacheKey] = commandParameters;}/// <summary>/// 从缓存中获取参数/// </summary>/// <param name="cacheKey">look up 中的cachekey</param>/// <returns></returns>public static OracleParameter[] GetCachedParameters(string cacheKey){OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey];if (cachedParms == null)return null;// 如果缓存中有此参数OracleParameter[] clonedParms = new OracleParameter[cachedParms.Length];// 返回参数的copyfor (int i = 0, j = cachedParms.Length; i < j; i++)clonedParms[i] = (OracleParameter)((ICloneable)cachedParms[i]).Clone();return clonedParms;}/// <summary>/// 一个静态的预处理函数/// </summary>/// <param name="cmd">存在的OracleCommand对象</param>/// <param name="conn">存在的OracleConnection对象</param>/// <param name="trans">存在的OracleTransaction对象</param>/// <param name="cmdType">命令类型(sql或者存在过程)</param>/// <param name="cmdText">sql语句或者存储过程名称</param>/// <param name="commandParameters">Parameters for the command</param>private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] commandParameters){//如果连接未打开,先打开连接if (conn.State != ConnectionState.Open)conn.Open();//未要执行的命令设置参数cmd.Connection = conn;cmd.CommandText = cmdText;cmd.CommandType = cmdType;//如果传入了事务,需要将命令绑定到指定的事务上去if (trans != null)cmd.Transaction = trans;//将传入的参数信息赋值给命令参数if (commandParameters != null){cmd.Parameters.AddRange(commandParameters);}}} }
转载于:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_oracle_0001.html
OracleHelper类相关推荐
- 第十节:基于MVC5+Unity+EF+Log4Net的基础结构搭建
一. 前言 从本节开始,将陆续的介绍几种框架搭建组合形式,分析每种搭建形式的优势和弊端,剖析搭建过程中涉及到的一些思想和技巧. (一). 技术选型 1. DotNet框架:4.6 2. 数据库访问:E ...
- 第九节:基于MVC5+AutoFac+EF+Log4Net的基础结构搭建
一. 前言 从本节开始,将陆续的介绍几种框架搭建组合形式,分析每种搭建形式的优势和弊端,剖析搭建过程中涉及到的一些思想和技巧. (一). 技术选型 1. DotNet框架:4.6 2. 数据库访问:E ...
- C#-连接oracle数据库
1.官方库Oracle.ManagedDataAccess,安装Install-Package Oracle.ManagedDataAccess 2.<add name="defaul ...
- C#基类库大全苏飞版--系列教程导航
C#基类库大全苏飞版--系列教程导航 在这里我把本论坛中所有相关的帮助 ...
- 自己搜集编写的Delphi 通用函数
{ ********************************************************************** } { Currency Common Functio ...
- oracleHelper 操作帮助类
1 using System; 2 using System.Configuration; 3 using System.Data; 4 using System.Collections; 5 usi ...
- .NET中使用OracleHelper
以前一直使用MSSQL,数据库操作类也是自己写的.现在项目使用Oracle,数据库操作类用的是MICROSOFT的DAAB中的OracleHelper.实际使用过程中,发现坛内少有此方面使用经验的贴子 ...
- C# 一个操作Oracle的简易工具类(通过System.Data.OracleClient)
2019独角兽企业重金招聘Python工程师标准>>> 一.关于本文 运行本文中的代码,需要 1)需要手动添加引用System.Data.OracleClient 在代码最前面加入这 ...
- SQLServer数据库访问帮助类
1.web.config配置数据库连接字符串 1 <?xml version="1.0"?> 2 <configuration> 3 <appSett ...
最新文章
- C++语言基本类型—字符型
- 【Android 应用开发】Activity 返回堆栈管理 ( 栈内复用模式 singleTask | 单实例模式 singleInstance )
- 使用Fiddler进行Web接口测试
- MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
- cf1562D Two Hundred Twenty One
- 80. 删除排序数组中的重复项 II golang
- 编程思想:面向对象和面向过程
- python的排序方式
- MVC系统的Filter
- Linux Samba服务器配置
- 垃圾分类小程序,云开发 (附源码)
- 简易ElementUi+Vue模板
- IoT -- 物联网平台架构设计分析
- python爬虫中国土地市场网的相关数据最新2021/5/7
- Snowy Smile (HDU - 6638,稀疏矩阵子矩阵最大和)
- Rust学习记录 -> 线程之间的通道通信
- 【蓝桥杯】【啊哈!算法】冒泡排序
- 杨天宇20180912-3 词频统计
- Python开发GUI实战:图片转换素描画工具!
- 说一说美国大学常用的课本吧,各位想自学的可以参考