123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Data.OracleClient;
- using System.Data;
- using System.Diagnostics;
- using System.Reflection;
- using System.Collections;
- using System.Threading;
- using System.Data.Common;
- using System.Configuration;
- namespace Com.Jpsoft.Hospital.DBUtility
- {
- /// <summary>
- /// OraOracle 的摘要说明。
- /// 参数传递是不用@改用:号
- /// </summary>
- public abstract class OracleDbHelper {
- /// <summary>
- /// 连接字符串
- /// </summary>
- public static string ConnStr = ConfigurationManager.ConnectionStrings["oralconn"].ToString();
- public OracleDbHelper()
- {
- }
- /// <summary>
- /// 执行sql语句
- /// </summary>
- /// <param name="sqlstr">查询sql语句</param>
- public static int ExecuteSql(string sqlstr) {
- LocalDataStoreSlot transDatalot = Thread.GetNamedDataSlot("transaction");
- OracleTransaction trans = (OracleTransaction)Thread.GetData(transDatalot);
- bool autoClose = false;
- OracleConnection conn = null;
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- conn = OpenConnection() as OracleConnection;
- autoClose = true;
- }
- else {
- conn = trans.Connection;
- autoClose = false;
- }
- OracleCommand cmd = new OracleCommand(sqlstr, conn);
- cmd.CommandType = CommandType.Text;
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- cmd.Transaction = trans;
- }
- int affectCount = 0;
- try {
- affectCount = cmd.ExecuteNonQuery();
- }
- catch (Exception ex) {
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- throw ex;
- }
- }
- finally {
- if (autoClose) {
- conn.Close();
- }
- }
- return affectCount;
- }
- /// <summary>
- /// 执行sql语句,事务执行
- /// </summary>
- /// <param name="sqlstr">查询sql语句</param>
- public static int ExecuteSql(string sqlstr, IDbTransaction trans) {
- int affectCount = 0;
- OracleConnection conn = ((OracleTransaction)trans).Connection;
- OracleCommand cmd = new OracleCommand(sqlstr, conn);
- cmd.Transaction = (OracleTransaction)trans;
- cmd.CommandType = CommandType.Text;
- try {
- affectCount = cmd.ExecuteNonQuery();
- trans.Commit();
- }
- catch (Exception ex) {
- trans.Rollback();
- }
- return affectCount;
- }
- /// <summary>
- /// 判断是否存在符合条件的记录
- /// </summary>
- /// <param name="sqlstr">sql查询语句</param>
- /// <returns>是否存在</returns>
- public static bool Exists(string sqlstr) {
- OracleConnection conn = OpenConnection() as OracleConnection;
- if (conn == null) {
- return false;
- }
- OracleCommand cmd = new OracleCommand(sqlstr, conn);
- cmd.CommandType = CommandType.Text;
- int num = Convert.ToInt32(cmd.ExecuteScalar());
- conn.Close();
- if (num > 0) {
- return true;
- }
- else {
- return false;
- }
- }
- /// <summary>
- /// 获取数据表
- /// </summary>
- /// <param name="sqlstr">查询sql语句</param>
- /// <returns>返回数据表</returns>
- public static DataTable GetDataTable(string sqlstr) {
- LocalDataStoreSlot transDatalot = Thread.GetNamedDataSlot("transaction");
- OracleTransaction trans = (OracleTransaction)Thread.GetData(transDatalot);
- OracleConnection conn = null;
- bool close = false;
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- conn = OpenConnection() as OracleConnection;
- close = true;
- }
- else {
- conn = trans.Connection;
- }
- DataTable dt = new DataTable();
- if (conn == null) {
- return null;
- }
- try {
- OracleDataAdapter adp = new OracleDataAdapter(sqlstr, conn);
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- adp.SelectCommand.Transaction = trans;
- }
- adp.Fill(dt);
- }
- catch (Exception ex) {
- }
- finally {
- if (close) {
- conn.Close();
- }
- }
- return dt;
- }
- /// <summary>
- /// 打开连接
- /// </summary>
- /// <returns>返回打开的数据库连接</returns>
- public static IDbConnection OpenConnection() {
- OracleConnection sqlconn = new OracleConnection();
- sqlconn = new OracleConnection(ConnStr);
- sqlconn.Open();
- return sqlconn;
- }
- public static DataSet Query(string sqlstr) {
- LocalDataStoreSlot transDatalot = Thread.GetNamedDataSlot("transaction");
- OracleTransaction trans = (OracleTransaction)Thread.GetData(transDatalot);
- OracleConnection conn = null;
- bool close = false;
- if (trans == null || trans.Connection.ConnectionString != ConnStr) {
- conn = OpenConnection() as OracleConnection;
- close = true;
- }
- else {
- conn = trans.Connection;
- }
- DataSet ds = new DataSet();
- if (conn == null) {
- return null;
- }
- try {
- OracleDataAdapter adp = new OracleDataAdapter(sqlstr, conn);
- adp.SelectCommand.Parameters.Clear();
- adp.Fill(ds);
- }
- catch (Exception ex) {
- }
- finally {
- if (close) {
- conn.Close();
- }
- }
- return ds;
- }
- }
- }
|