博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OracleHelper类
阅读量:6905 次
发布时间:2019-06-27

本文共 9235 字,大约阅读时间需要 30 分钟。

using System;using System.Configuration;using System.Data;using System.Collections;using Oracle.DataAccess.Client;namespace OracleHelper{    ///     ///Oracle数据库操作帮助类    ///     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;        //为缓存的参数创建一个hashtable        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());        ///         /// 增删改操作使用此方法        ///         /// 连接字符串        /// 命令类型(sql语句或者存储过程)        /// 要执行的sql语句或者存储过程名称        /// 执行所需的一些参数        /// 
返回受影响的行数
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); //创建一个OracleConnection using (OracleConnection connection = new OracleConnection(connectionString)) { //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); //执行命令返回 int val = cmd.ExecuteNonQuery(); //清空参数 cmd.Parameters.Clear(); return val; } } /// /// 增删改操作使用此方法(需要一个存在的事务参数) /// /// 一个存在的事务 /// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
返回受影响的行数
public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); //执行命令返回 int val = cmd.ExecuteNonQuery(); //清空参数 cmd.Parameters.Clear(); return val; } /// /// 增删改操作使用此方法(需要一个存在的连接) /// /// 一个存在的OracleConnection参数 /// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
返回受影响的行数
public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); //执行命令返回 int val = cmd.ExecuteNonQuery(); //清空参数 cmd.Parameters.Clear(); return val; } /// /// 查询返回一个结果集 /// /// 连接字符串 //// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); // 创建一个OracleConnection OracleConnection 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; } } /// /// 执行语句返回的是单行单列的结果 /// /// 连接字符串 /// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); // 创建一个OracleConnection using (OracleConnection conn = new OracleConnection(connectionString)) { //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); //执行查询 object val = cmd.ExecuteScalar(); //清空参数 cmd.Parameters.Clear(); return val; } } /// /// 执行语句返回的是单行单列的结果(有指定的事务参数) /// /// 一个存在的事务参数 /// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换
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"); // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters); //执行查询 object retval = cmd.ExecuteScalar(); //清空参数 cmd.Parameters.Clear(); return retval; } /// /// 执行语句返回的是单行单列的结果(有指定的连接参数) /// /// 一个存在的连接参数 /// 命令类型(sql或者存储过程) /// sql语句或者存储过程名称 /// 命令所需参数数组 ///
返回是第一行第一列的结果(object类型)请使用Covert.to进行类型转换
public static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { // 创建一个OracleCommand OracleCommand cmd = new OracleCommand(); //调用静态方法PrepareCommand完成赋值操作 PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters); //执行查询 object val = cmd.ExecuteScalar(); //清空参数 cmd.Parameters.Clear(); return val; } /// /// Add a set of parameters to the cached /// /// Key value to look up the parameters /// Actual parameters to cached public static void CacheParameters(string cacheKey, params OracleParameter[] commandParameters) { parmCache[cacheKey] = commandParameters; } /// /// 从缓存中获取参数 /// /// look up 中的cachekey ///
public static OracleParameter[] GetCachedParameters(string cacheKey) { OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey]; if (cachedParms == null) return null; // 如果缓存中有此参数 OracleParameter[] clonedParms = new OracleParameter[cachedParms.Length]; // 返回参数的copy for (int i = 0, j = cachedParms.Length; i < j; i++) clonedParms[i] = (OracleParameter)((ICloneable)cachedParms[i]).Clone(); return clonedParms; } /// /// 一个静态的预处理函数 /// /// 存在的OracleCommand对象 /// 存在的OracleConnection对象 /// 存在的OracleTransaction对象 /// 命令类型(sql或者存在过程) /// sql语句或者存储过程名称 /// Parameters for the command 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); } } }}

 

转载地址:http://holdl.baihongyu.com/

你可能感兴趣的文章
Python ORM框架之 Peewee入门
查看>>
Windows版Mycat结合mysql安装配置+水平切分(转载)
查看>>
CSS3 Flex布局整理(二)-容器属性
查看>>
第11章:sed进阶操作
查看>>
js获取单独一个checkbox是否被选中
查看>>
【工具】Sublime + MarkdownEditing + OmniMarkupPreviewer使用起来
查看>>
django Multi-table inheritance ---- 用于实现基表-子表
查看>>
关于Mac终端故障一直出现 [进程已完毕]
查看>>
带着问题学习分布式系统之数据分片
查看>>
Maven实现Web应用集成測试自己主动化 -- 測试自己主动化(WebTest Maven Plugin)
查看>>
jvm虚拟机原理1
查看>>
51 Nod 1029 大数除法【Java大数乱搞】
查看>>
1941套站点模版,终生收藏,个个精品
查看>>
使用Reveal来查看别人的APP界面+白苹果不刷机解决方式
查看>>
MongoDB(六)-- 集群搭建
查看>>
QQ窗体的控制,同步异步打开360网盘,控制360网盘窗体的移动
查看>>
Linux中tomcat启动很慢,SessionIdGeneratorBase.createSecureRandom耗时5分钟
查看>>
Android倒计时案例展示
查看>>
openstack resize 更新显卡驱动程序解决问题
查看>>
人人都能够做深度学习应用:入门篇
查看>>