很早就想写博客,又因为一些原因一直脱到现在,应公司项目要求写了一个oracleHelper并附带一些日志的输入

public class OracleHelper{protected TSunLog Log = CLog.GetInstance();private OracleConnection _Conn;private COracleParameter _server;public OracleHelper(COracleParameter server){_server = server;}public OracleConnection Conn{get{if (_Conn == null){if (ConnectToOracle())return _Conn;}else if (_Conn.State == ConnectionState.Closed)_Conn.Open();return _Conn;}set{_Conn = value;}}private string ConnectionString{get{return string.Format("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))(CONNECT_DATA=(SERVICE_NAME={2})));Persist Security Info=True;User ID={3};Password={4};", (object)_server.ServerIp, (object)_server.Port, (object)_server.DbName, (object)_server.UserName, (object)_server.Password);}}private bool ConnectToOracle(){bool flag;try{_Conn = new OracleConnection(ConnectionString);_Conn.Open();flag = true;Log.Debug("[CDbOracle][ConnectToOracle]:连接数据库成功!");}catch (Exception ex){Log.Debug(string.Format("[CDbOracle][ConnectToOracle]:连接数据库失败!{0}", (object)ex.Message));flag = false;}return flag;}public void Close(){if (Conn == null)return;Conn.Close();Log.Debug("[CDbOracle][Close]:关闭数据库成功!");}private void CheckConnection(){if (Conn.State != ConnectionState.Closed)return;Conn.Open();}public int ExecuteMutliQuery(string commandText, string[][] dtData){CheckConnection();int num = 0;using (OracleTransaction tran = Conn.BeginTransaction()){try{foreach (string[] strArray in dtData)num += ExecuteNonQuery(tran, commandText, (object[])strArray);tran.Commit();}catch (Exception ex){Log.Debug("[CDbOracle][ExecuteMutliQuery]:" + ex.Message);tran.Rollback();}finally{Conn.Close();}}return num;}private int ExecuteNonQuery(OracleTransaction tran, string commandText, params object[] paramList){if (tran == null){Log.Debug("[CDbOracle][ExecuteNonQuery]:tran is null");return 0;}if (tran.Connection == null){Log.Debug("[CDbOracle][ExecuteNonQuery]:tran.Connection is null");return 0;}using (IDbCommand command = (IDbCommand)tran.Connection.CreateCommand()){command.CommandText = commandText.Replace("@", ":");AttachParameters((OracleCommand)command, command.CommandText, paramList);if (tran.Connection.State == ConnectionState.Closed)tran.Connection.Open();return command.ExecuteNonQuery();}}private OracleParameterCollection AttachParameters(OracleCommand cmd, string commandText, object[] paramList){if (paramList == null || paramList.Length == 0)return (OracleParameterCollection)null;OracleParameterCollection parameters = cmd.Parameters;MatchCollection matchCollection = new Regex("(:)\\S*(.*?)\\b", RegexOptions.IgnoreCase).Matches(commandText.Substring(commandText.IndexOf(":")).Replace(",", " ,"));string[] strArray = new string[matchCollection.Count];int index1 = 0;foreach (Match match in matchCollection){strArray[index1] = match.Value;++index1;}int index2 = 0;foreach (object obj in paramList){Type type = obj.GetType();OracleParameter oracleParameter = new OracleParameter();switch (type.ToString()){case "DBNull":case "Char":case "SByte":case "UInt16":case "UInt32":case "UInt64":throw new SystemException("Invalid data type");case "System.String":oracleParameter.DbType = DbType.String;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)(string)paramList[index2];parameters.Add(oracleParameter);break;case "System.Byte[]":oracleParameter.DbType = DbType.Binary;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)(byte[])paramList[index2];parameters.Add(oracleParameter);break;case "System.Int32":oracleParameter.DbType = DbType.Int32;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)(int)paramList[index2];parameters.Add(oracleParameter);break;case "System.Int64":oracleParameter.DbType = DbType.Int32;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)Convert.ToInt32(paramList[index2]);parameters.Add(oracleParameter);break;case "System.Boolean":oracleParameter.DbType = DbType.Boolean;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)(bool)paramList[index2];parameters.Add(oracleParameter);break;case "System.DateTime":oracleParameter.DbType = DbType.DateTime;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)Convert.ToDateTime(paramList[index2]);parameters.Add(oracleParameter);break;case "System.Double":oracleParameter.DbType = DbType.Double;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)Convert.ToDouble(paramList[index2]);parameters.Add(oracleParameter);break;case "System.Decimal":oracleParameter.DbType = DbType.Decimal;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)Convert.ToDecimal(paramList[index2]);break;case "System.Guid":oracleParameter.DbType = DbType.Guid;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = (object)(Guid)paramList[index2];break;case "System.Object":oracleParameter.DbType = DbType.Object;oracleParameter.ParameterName = strArray[index2];oracleParameter.Value = paramList[index2];parameters.Add(oracleParameter);break;default:throw new SystemException("Value is of unknown data type");}++index2;}return parameters;}public int ExecuteNonSql(string strSql){CheckConnection();OracleCommand command = Conn.CreateCommand();command.CommandText = strSql;int num = command.ExecuteNonQuery();command.Dispose();Conn.Close();return num;}public int ExecuteNonSql(string strSql, object[] parameters){CheckConnection();OracleCommand command = Conn.CreateCommand();command.CommandText = strSql.Replace("@", ":");AttachParameters(command, command.CommandText, parameters);int num = command.ExecuteNonQuery();command.Dispose();Conn.Close();return num;}public bool ExecuteSql(List<string> strSqls){CheckConnection();foreach (string strSql in strSqls)Log.Debug("[CDbOracle][ExecuteSql]:" + strSql);int num = 0;using (OracleCommand oracleCommand = new OracleCommand()){oracleCommand.Connection = Conn;using (OracleTransaction oracleTransaction = Conn.BeginTransaction()){oracleCommand.Transaction = oracleTransaction;try{for (int index = 0; index < strSqls.Count; ++index){string str = strSqls[index].ToString();if (str.Trim().Length > 1){oracleCommand.CommandText = str;num += oracleCommand.ExecuteNonQuery();}}oracleTransaction.Commit();}catch (Exception ex){oracleTransaction.Rollback();Log.Debug("[CDbOracle][ExecuteSql][Error]:" + ex.Message);}}}return num > 0;}public bool ExecuteSql(string strSql){CheckConnection();Log.Debug("[CDbOracle][ExecuteSql]:" + strSql);OracleCommand command = Conn.CreateCommand();command.CommandText = strSql;int num = command.ExecuteNonQuery();command.Dispose();Conn.Close();return num > 0;}public bool ExecuteSql(string strSql, object[] parameters){return ExecuteNonSql(strSql, parameters) > 0;}public object GetObject(string strSql){CheckConnection();Log.Debug("[CDbOracle][GetObject]:" + strSql);OracleCommand command = Conn.CreateCommand();command.CommandText = strSql;object obj = command.ExecuteScalar();command.Dispose();Conn.Close();Log.Debug(obj.ToString());return obj;}public string GetString(string strSql){string str = GetObject(strSql).ToString();Log.Debug("[CDbOracle][GetString]:" + str);return str;}public List<string> GetStrList(string sql){Log.Debug(sql);List<string> stringList = new List<string>();OracleCommand command = Conn.CreateCommand();command.CommandText = sql;IDataReader dataReader = (IDataReader)command.ExecuteReader();while (dataReader.Read()){string sText = dataReader.GetString(0);Log.Debug(sText);stringList.Add(sText);}dataReader.Close();command.Dispose();return stringList;}public DataTable QuerySql(string sSql){CheckConnection();Log.Debug("[CDbOracle][QuerySql]:" + sSql);OracleCommand command = Conn.CreateCommand();command.CommandText = sSql;OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(command);DataSet dataSet = new DataSet();oracleDataAdapter.Fill(dataSet);oracleDataAdapter.Dispose();command.Dispose();return dataSet.Tables[0];}public DataTable QueryTable(string sql){return QuerySql(sql);}public string ExecProcess(string processName, Dictionary<string, string> dicValue){CheckConnection();string str;try{OracleCommand command = Conn.CreateCommand();command.CommandType = CommandType.StoredProcedure;command.CommandText = processName;foreach (KeyValuePair<string, string> keyValuePair in dicValue){if (keyValuePair.Value != null){command.Parameters.Add(keyValuePair.Key, OracleDbType.NVarchar2).Direction = ParameterDirection.Input;command.Parameters[keyValuePair.Key].Value = (object)keyValuePair.Value;}elsecommand.Parameters.Add(keyValuePair.Key, OracleDbType.Int32).Direction = ParameterDirection.Output;}command.ExecuteNonQuery();str = command.Parameters["res"].Value.ToString();}catch (Exception ex){Log.Debug(ex);str = "-1";}return str;}}

转载于:https://www.cnblogs.com/rongshen/p/9299546.html

OracleHelper相关推荐

  1. oracleHelper 操作帮助类

    1 using System; 2 using System.Configuration; 3 using System.Data; 4 using System.Collections; 5 usi ...

  2. .NET中使用OracleHelper

    以前一直使用MSSQL,数据库操作类也是自己写的.现在项目使用Oracle,数据库操作类用的是MICROSOFT的DAAB中的OracleHelper.实际使用过程中,发现坛内少有此方面使用经验的贴子 ...

  3. OracleHelper类

    using System; using System.Configuration; using System.Data; using System.Collections; using Oracle. ...

  4. 开源依旧:再次分享一个进销存系统

    开篇 我之前发过一篇博文<两天完成一个小型工程报价系统(三层架构)>,不少朋友向我要源码学习,后来久而久之忘记回复了.今天我再分享一个进销存系统,只为学习,没有复杂的框架和设计模式,有的是 ...

  5. [zt]petshop4.0 详解之八(PetShop表示层设计)

    代码中,InsertUser()方法就是负责用户的创建,而在之前则需要判断创建的用户是否已经存在.InsertUser()方法的定义如下: private static bool InsertUser ...

  6. PetShop之表示层设计 - 《解剖PetShop》系列之六

    六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心.正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的.一件交付给客户使用 ...

  7. c#操作oracle的通用类

    using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...

  8. 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)

    概述 在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的.那么如何应对这种"迁移的变化&quo ...

  9. 数据访问层之数据库访问设计(转)

    在PetShop中,系统需要处理的数据库对象分为两类:一是数据实体,对应数据库中相应的数据表.它们没有行为,仅用于表现对象的数据.这些实体类都被放到Model程序集中,例如数据表Order对应的实体类 ...

最新文章

  1. python selenium p_Python爬虫(二十一)_Selenium与PhantomJS
  2. Java的新项目学成在线笔记-day8(三)
  3. 关于 Ruby Ruby on Rails 的一些书及论坛网站
  4. How to delete ASO files from Flash
  5. iframe带了token不显示_不就是登录吗,能有多复杂?sa-token带你轻松搞定多地登陆、单地登录、同端互斥登录...
  6. 扩展吉日嘎拉的用户角色管理,让用户角色编码和名称在一个组织里面唯一
  7. thinkphp redis队列处理_教你用ThinkPHP中thinkphpqueue
  8. activiti 流程事件触发trigger
  9. exec 直接赋值_了解 JavaScript 解构赋值
  10. 问题解决:Unlink of the file ‘.git/objects/pack/….idx’ failed. Should I try again?
  11. LINUX SHELL自定义函数及参数范例
  12. Web测试中性能测试基础
  13. c# gerber文件读取_gerber文件查看器|gerber文件查看工具(GerbView)下载 v7.71 免费版 - 121下载站...
  14. GoLang之取地址符、指针
  15. Unity PBR材质
  16. Verilog 语言基础
  17. Linux-USB学习 -- USB枚举过程
  18. 360搜索“触链”聚焦版权领域,“图刻”是噱头还是不忘安全初心?
  19. 微软计划在未来几周内使用更快版本的 ChatGPT 更新 Bing
  20. 电子商务网站用php还是java?

热门文章

  1. ajax上传多行数据及数组循环添加对象
  2. EXCEL根据条件随机内插若干行及对应数据
  3. 【幽默】工作搞不好的原因
  4. 计算机中那些事儿(十):资料管理一些建议---实践篇
  5. 被开除的Roadstar合伙人决定暂不回应,“报销大保健”也能忍?
  6. Uber开源深度概率编程语言Pyro,AI实验室蛰伏一年首现身
  7. 数据分析融入至BI工具的新思路
  8. HTML常用标签及属性
  9. 极简版ASP.NET Core学习路径及教程
  10. [解读REST] 6.REST的应用经验以及教训