用于Oracle 10g的数据操作公共类 OracleHelper.cs
来源:互联网 发布:制作喷绘软件 编辑:程序博客网 时间:2024/05/17 04:21
注意:
1,需要 System.Data.OracleClient 这个DLL,下载地址: http://good.gd/1961806.htm
2,这个公共类必须放在UI层。
如果放到非UI层,就会出问题,俺也没有找到原因。望智者告之,万分感谢!
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.OracleClient;namespace JonseTest{ public static class OracleHelper { private static string _sConnString = string.Empty; //string sConnStr = @"Data Source=**;User Id=**;Password=**;"; public static string ConnString { get { return _sConnString; } set { _sConnString = value; } } public static bool TestConn(string sConnStr = "") { OracleConnection myConn = null; bool bResult = false; try { if (string.IsNullOrEmpty(sConnStr)) sConnStr = ConnString; myConn = new OracleConnection(sConnStr); myConn.Open(); } catch (Exception ex) { } finally { if (myConn != null && myConn.State.ToString() == "Open") bResult = true; if (myConn != null) { myConn.Close(); } } return bResult; } public static DataTable GetDataTable(out string sErr, string sSQL, string sConnStr = "", params OracleParameter[] cmdParams) { DataTable dt = null; sErr = string.Empty; if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString; OracleConnection accConn = null; try { accConn = new OracleConnection(sConnStr); OracleCommand accCmd = new OracleCommand(sSQL, accConn); accConn.Open(); if (cmdParams != null) { foreach (OracleParameter parm in cmdParams) accCmd.Parameters.Add(parm); } OracleDataAdapter adapter = new OracleDataAdapter(accCmd); dt = new DataTable(); adapter.Fill(dt); accConn.Close(); } catch (Exception ex) { sErr = ex.Message; } return dt; } // 取dataset public static DataSet GetDataSet(out string sError, string sSQL, string sConnStr = "", params OracleParameter[] cmdParams) { DataSet ds = null; sError = string.Empty; try { if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString; OracleConnection conn = new OracleConnection(sConnStr); conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = sSQL; if (cmdParams != null) { foreach (OracleParameter parm in cmdParams) cmd.Parameters.Add(parm); } OracleDataAdapter dapter = new OracleDataAdapter(cmd); ds = new DataSet(); dapter.Fill(ds); } catch (Exception ex) { sError = ex.Message; } return ds; } // 取某个单一的元素 public static object GetSingle(out string sError, string sSQL, string sConnStr) { DataTable dt = GetDataTable(out sError, sSQL, sConnStr); if (dt != null && dt.Rows.Count > 0) { return dt.Rows[0][0]; } return null; } // 取最大的ID public static Int32 GetMaxID(out string sError, string sKeyField, string sTableName, string sConnStr = null) { DataTable dt = GetDataTable(out sError, "select nvl(max(" + sKeyField + "),0) as MaxID from " + sTableName, sConnStr); if (dt != null && dt.Rows.Count > 0) { return Convert.ToInt32(dt.Rows[0][0].ToString()); } return 0; } // 执行 insert,update,delete 动作,也可以使用事务 public static bool UpdateData(out string sError, string sSQL, string sConnStr = "", OracleParameter[] cmdParams = null, bool bUseTransaction = false) { int iResult = 0; sError = string.Empty; if (string.IsNullOrEmpty(sConnStr)) sConnStr = _sConnString; if (!bUseTransaction) { try { OracleConnection conn = new OracleConnection(sConnStr); if (conn.State != ConnectionState.Open) conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = sSQL; if (cmdParams != null) { foreach (OracleParameter parm in cmdParams) cmd.Parameters.Add(parm); } iResult = cmd.ExecuteNonQuery(); } catch (Exception ex) { sError = ex.Message; iResult = -1; } } else // 使用事务 { OracleTransaction trans = null; try { OracleConnection conn = new OracleConnection(sConnStr); if (conn.State != ConnectionState.Open) conn.Open(); trans = conn.BeginTransaction(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = sSQL; if (cmdParams != null) { foreach (OracleParameter parm in cmdParams) cmd.Parameters.Add(parm); } cmd.Transaction = trans; iResult = cmd.ExecuteNonQuery(); trans.Commit(); } catch (Exception ex) { sError = ex.Message; iResult = -1; trans.Rollback(); } } return iResult > 0; } private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { foreach (OracleParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } }}
示意图:
- 用于Oracle 10g的数据操作公共类 OracleHelper.cs
- C# Oracle数据库操作类OracleHelper
- 用于Access数据库的DB操作类AccessHelper.cs
- OracleHelper.cs源码
- OracleHelper.cs源码
- OracleHelper.cs 源码
- 无法对属性或索引器“Oracle.DataAccess.Client.OracleCommand.Transaction”赋值 -- 它是只读的 OracleHelper.cs 500 17
- 用于验证的公共类
- 用于验证的公共类
- Oracle Database 10g 中的正规表达式特性是一个用于处理文本数据的强大工具
- (07)通用的数据访问 OracleHelper
- (07)通用的数据访问 OracleHelper
- 数据操作类 SQLHelper.cs
- OracleHelper--> Oracle数据库连接类及测试
- OracleHelper类
- OracleHelper类
- C#(asp.net)对字符串的操作公共类(StringUtil.cs)
- ORACLE 10g中UNDO数据的作用及UNDO表空间的操作详解
- java6 in ubuntu11.10
- 我的iOS学习路线
- discuz外部调用显示静态地址
- oracle中job长时间执行没有结束
- SDK
- 用于Oracle 10g的数据操作公共类 OracleHelper.cs
- android 根文件系统 init
- Zstack SampleApp加入串口通信
- . <WP7>读取工程中的一个文件内容
- poj3422
- Linux无线网络设置(wpa_supplicant的使用)
- myeclipse Can't load library: /tmp/swtlib-32/libswt-mozilla-gtk.so解决
- wpf程序不能正常打开
- gson和jackson生成json简单性能对比