Oracle數據庫驅動類DBHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using Oracle.DataAccess.Client;

namespace DAL
{
    public class DBHelper
    {
        //public static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;//方式一,數據庫鏈接串寫在配置文件中
        public static string ConnectionString = "Data Source=ORCL;User ID=bonus;Password=bonus123";//方式二,直接寫在cs文件中


        #region 對於所有表 ExecuteNonQuery() 直接對數據進行更新操作

        public static int ExecuteNonQuery(string sql)
        {
            return ExecuteNonQuery(sql, null, CommandType.Text);
        }

        public static int ExecuteNonQuery(string sql, OracleParameter[] para)
        {
            return ExecuteNonQuery(sql, para, CommandType.Text);
        }

        public static int ExecuteNonQuery(string sql, CommandType cmdType)
        {
            return ExecuteNonQuery(sql, null, cmdType);
        }
        public static int ExecuteNonQuery(string sql, OracleParameter[] para, CommandType cmdType)
        {
            int rows = -1;
            using (OracleConnection conn = new OracleConnection(ConnectionString))
            {
                OracleCommand cmd = new OracleCommand(sql, conn);
                if (para != null)
                {
                    cmd.Parameters.AddRange(para);
                }
                cmd.CommandType = cmdType;

                conn.Open();
                rows = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                conn.Close();
            }
            return rows;
        }

        #endregion

        #region 對於所有表 ExecuteReader 返回結果集

        public static OracleDataReader ExecuteReader(string sql)
        {
            return ExecuteReader(sql, null, CommandType.Text);
        }

        public static OracleDataReader ExecuteReader(string sql, OracleParameter[] para)
        {
            return ExecuteReader(sql, para, CommandType.Text);
        }
        public static OracleDataReader ExecuteReader(string sql, CommandType cmdType)
        {
            return ExecuteReader(sql, null, cmdType);
        }

        public static OracleDataReader ExecuteReader(string sql, OracleParameter[] para, CommandType cmdType)
        {
            OracleCommand cmd = null;
            OracleConnection conn = new OracleConnection(ConnectionString); ;
            cmd = new OracleCommand(sql, conn);
            if (para != null)
            {
                cmd.Parameters.AddRange(para);
            }
            cmd.CommandType = cmdType;
            conn.Open();
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }

        #endregion


        #region 對於所有表 ExecuteDataTable 返回數據表

        public static DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, null, CommandType.Text);
        }

        public static DataTable ExecuteDataTable(string sql, OracleParameter[] para)
        {
            return ExecuteDataTable(sql, para, CommandType.Text);
        }
        public static DataTable ExecuteDataTable(string sql, CommandType cmdType)
        {
            return ExecuteDataTable(sql, null, cmdType);
        }

        public static DataTable ExecuteDataTable(string sql, OracleParameter[] para, CommandType cmdType)
        {
            try
            {
                DataTable myTable = new DataTable();
                using (OracleConnection conn = new OracleConnection(ConnectionString))
                {
                    OracleCommand cmd = new OracleCommand(sql, conn);
                    if (para != null)
                    {
                        cmd.Parameters.Add(para);
                    }
                    cmd.CommandType = cmdType;

                    OracleDataAdapter da = new OracleDataAdapter(cmd);
                    da.Fill(myTable);
                }
                return myTable;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion


        #region 對於所有表 ExecuteScalar 返回數據表
        public static object ExecuteScalar(string sql)
        {
            return ExecuteScalar(sql, null, CommandType.Text);
        }

        public static object ExecuteScalar(string sql, OracleParameter[] para)
        {
            return ExecuteScalar(sql, para, CommandType.Text);
        }

        public static object ExecuteScalar(string sql, CommandType cmdType)
        {
            return ExecuteScalar(sql, null, cmdType);
        }

        public static object ExecuteScalar(string sql, OracleParameter[] para, CommandType cmdType)
        {
            object res = null;
            using (OracleConnection conn = new OracleConnection(ConnectionString))
            {
                OracleCommand cmd = new OracleCommand(sql, conn);
                if (para != null)
                {
                    cmd.Parameters.AddRange(para);
                }
                cmd.CommandType = cmdType;
                conn.Open();
                res = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                conn.Close();
            }
            return res;
        }

        #endregion


        #region 存儲過程操作
        /// <summary>  
        /// 執行存儲過程  
        /// </summary>  
        /// <param name="storedProcName">存儲過程名</param>  
        /// <param name="parameters">存儲過程參數</param>  
        /// <returns>OracleDataReader返回數據集</returns>  
        public static OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
        {
            OracleConnection connection = new OracleConnection(ConnectionString);
            OracleDataReader returnReader;
            connection.Open();
            OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters);
            command.CommandType = CommandType.StoredProcedure;
            returnReader = command.ExecuteReader();
            return returnReader;
        }
        /// <summary>  
        /// 執行存儲過程  
        /// </summary>  
        /// <param name="storedProcName">存儲過程名</param>  
        /// <param name="parameters">存儲過程參數</param>  
        /// <param name="tableName">DataSet結果中的表名</param>  
        /// <returns>DataSet</returns>  
        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
        {
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                DataSet dataSet = new DataSet();
                connection.Open();
                OracleDataAdapter sqlDA = new OracleDataAdapter();
                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
                sqlDA.Fill(dataSet, tableName);
                connection.Close();
                return dataSet;
            }
        }
        /// <summary>  
        /// 構建 OracleCommand 對象(用來返回一個結果集,而不是一個整數值)  
        /// </summary>  
        /// <param name="connection">數據庫連接</param>  
        /// <param name="storedProcName">存儲過程名</param>  
        /// <param name="parameters">存儲過程參數</param>  
        /// <returns>OracleCommand</returns>  
        private static OracleCommand BuildQueryCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
        {
            OracleCommand command = new OracleCommand(storedProcName, connection);
            command.CommandType = CommandType.StoredProcedure;
            foreach (OracleParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }
            return command;
        }
 
     
        /// <summary>  
        /// 創建 OracleCommand 對象實例(存儲過程返回輸出參數)   
        /// </summary>  
        /// <param name="storedProcName">存儲過程名</param>  
        /// <param name="parameters">存儲過程參數</param>  
        /// <returns>OracleCommand 對象實例</returns>  
        /// 調用此方法的例子
        /* OracleParameter[] parameter = {  
              new OracleParameter("starttime",OracleDbType.Varchar2,8),  
                new OracleParameter("endtime",OracleDbType.Varchar2,8),
                new OracleParameter("days",OracleDbType.Decimal,3)
                };
                parameter[0].Direction = ParameterDirection.Input;
                parameter[1].Direction = ParameterDirection.Input;
                parameter[2].Direction = ParameterDirection.Output;
                //new OracleParameter("t_sql", OracleType.Cursor)};
                parameter[0].Value = starttime;
                parameter[1].Value = endtime;
       
                // parameter[2].Direction = System.Data.ParameterDirection.Output;
                 command = DBHelper.RunProcedureCommand("pro_comovertimedays", parameter);

                    //接收函數返回值
                  over_days = Convert.ToString(parameter[2].Value);//res
    */
        public static OracleCommand RunProcedureCommand(string storedProcName, IDataParameter[] parameters)
        {
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                
                OracleCommand command = new OracleCommand(storedProcName, connection);
                command.CommandType = CommandType.StoredProcedure;
                foreach (OracleParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                connection.Open();
                command.ExecuteNonQuery();
                connection.Close();
                return command;               
                
            }
        }
        #endregion   
 
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章