- using System;
- using System.Data;
- using System.Data.SqlClient;
- using System.Configuration;
- using System.ComponentModel;
- namespace SQLHelper
- {
- /// <summary>
- /// SQLHelper類封裝對SQL Server數據庫的添加、刪除、修改和選擇等操作
- /// </summary>
- public class SQLHelper
- {
- /// 連接數據源
- private SqlConnection myConnection = null;
- private readonly string RETURNVALUE = "RETURNVALUE";
- /// <summary>
- /// 打開數據庫連接.
- /// </summary>
- private void Open()
- {
- // 打開數據庫連接
- if (myConnection == null)
- {
- myConnection = new SqlConnection(ConfigurationManager.AppSettings["SQLCONNECTIONSTRING"].ToString());
- }
- if(myConnection.State == ConnectionState.Closed)
- {
- try
- {
- ///打開數據庫連接
- myConnection.Open();
- }
- catch(Exception ex)
- {
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉已經打開的數據庫連接
- }
- }
- }
- /// <summary>
- /// 關閉數據庫連接
- /// </summary>
- public void Close()
- {
- ///判斷連接是否已經創建
- if(myConnection != null)
- {
- ///判斷連接的狀態是否打開
- if(myConnection.State == ConnectionState.Open)
- {
- myConnection.Close();
- }
- }
- }
- /// <summary>
- /// 釋放資源
- /// </summary>
- public void Dispose()
- {
- // 確認連接是否已經關閉
- if (myConnection != null)
- {
- myConnection.Dispose();
- myConnection = null;
- }
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <returns>返回存儲過程返回值</returns>
- public int RunProc(string procName)
- {
- SqlCommand cmd = CreateProcCommand(procName, null);
- try
- {
- ///執行存儲過程
- cmd.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- ///返回存儲過程的參數值
- return (int)cmd.Parameters[RETURNVALUE].Value;
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程名稱</param>
- /// <param name="prams">存儲過程所需參數</param>
- /// <returns>返回存儲過程返回值</returns>
- public int RunProc(string procName, SqlParameter[] prams)
- {
- SqlCommand cmd = CreateProcCommand(procName, prams);
- try
- {
- ///執行存儲過程
- cmd.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- ///返回存儲過程的參數值
- return (int)cmd.Parameters[RETURNVALUE].Value;
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="dataReader">返回存儲過程返回值</param>
- public void RunProc(string procName, out SqlDataReader dataReader)
- {
- ///創建Command
- SqlCommand cmd = CreateProcCommand(procName, null);
- try
- {
- ///讀取數據
- dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- }
- catch(Exception ex)
- {
- dataReader = null;
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="prams">存儲過程所需參數</param>
- /// <param name="dataSet">返回DataReader對象</param>
- public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
- {
- ///創建Command
- SqlCommand cmd = CreateProcCommand(procName, prams);
- try
- {
- ///讀取數據
- dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- }
- catch(Exception ex)
- {
- dataReader = null;
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="dataSet">返回DataSet對象</param>
- public void RunProc(string procName, ref DataSet dataSet)
- {
- if(dataSet == null)
- {
- dataSet = new DataSet();
- }
- ///創建SqlDataAdapter
- SqlDataAdapter da = CreateProcDataAdapter(procName,null);
- try
- {
- ///讀取數據
- da.Fill(dataSet);
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- }
- /// <summary>
- /// 執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="prams">存儲過程所需參數</param>
- /// <param name="dataSet">返回DataSet對象</param>
- public void RunProc(string procName, SqlParameter[] prams,ref DataSet dataSet)
- {
- if(dataSet == null)
- {
- dataSet = new DataSet();
- }
- ///創建SqlDataAdapter
- SqlDataAdapter da = CreateProcDataAdapter(procName,prams);
- try
- {
- ///讀取數據
- da.Fill(dataSet);
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <returns>返回值</returns>
- public int RunSQL(string cmdText)
- {
- SqlCommand cmd = CreateSQLCommand(cmdText, null);
- try
- {
- ///執行存儲過程
- cmd.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- ///返回存儲過程的參數值
- return (int)cmd.Parameters[RETURNVALUE].Value;
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="prams">SQL語句所需參數</param>
- /// <returns>返回值</returns>
- public int RunSQL(string cmdText, SqlParameter[] prams)
- {
- SqlCommand cmd = CreateSQLCommand(cmdText,prams);
- try
- {
- ///執行存儲過程
- cmd.ExecuteNonQuery();
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- ///返回存儲過程的參數值
- return (int)cmd.Parameters[RETURNVALUE].Value;
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="dataReader">返回DataReader對象</param>
- public void RunSQL(string cmdText, out SqlDataReader dataReader)
- {
- ///創建Command
- SqlCommand cmd = CreateSQLCommand(cmdText, null);
- try
- {
- ///讀取數據
- dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- }
- catch(Exception ex)
- {
- dataReader = null;
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="prams">SQL語句所需參數</param>
- /// <param name="dataReader">返回DataReader對象</param>
- public void RunSQL(string cmdText, SqlParameter[] prams, out SqlDataReader dataReader)
- {
- ///創建Command
- SqlCommand cmd = CreateSQLCommand(cmdText, prams);
- try
- {
- ///讀取數據
- dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- }
- catch(Exception ex)
- {
- dataReader = null;
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="dataSet">返回DataSet對象</param>
- public void RunSQL(string cmdText, ref DataSet dataSet)
- {
- if(dataSet == null)
- {
- dataSet = new DataSet();
- }
- ///創建SqlDataAdapter
- SqlDataAdapter da = CreateSQLDataAdapter(cmdText,null);
- try
- {
- ///讀取數據
- da.Fill(dataSet);
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- }
- /// <summary>
- /// 執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="prams">SQL語句所需參數</param>
- /// <param name="dataSet">返回DataSet對象</param>
- public void RunSQL(string cmdText, SqlParameter[] prams,ref DataSet dataSet)
- {
- if(dataSet == null)
- {
- dataSet = new DataSet();
- }
- ///創建SqlDataAdapter
- SqlDataAdapter da = CreateProcDataAdapter(cmdText,prams);
- try
- {
- ///讀取數據
- da.Fill(dataSet);
- }
- catch(Exception ex)
- {
- ///記錄錯誤日誌
- SystemError.CreateErrorLog(ex.Message);
- }
- finally
- {
- ///關閉數據庫的連接
- Close();
- }
- }
- /// <summary>
- /// 創建一個SqlCommand對象以此來執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="prams">存儲過程所需參數</param>
- /// <returns>返回SqlCommand對象</returns>
- private SqlCommand CreateProcCommand(string procName, SqlParameter[] prams)
- {
- ///打開數據庫連接
- Open();
- ///設置Command
- SqlCommand cmd = new SqlCommand(procName, myConnection);
- cmd.CommandType = CommandType.StoredProcedure;
- ///添加把存儲過程的參數
- if (prams != null)
- {
- foreach (SqlParameter parameter in prams)
- {
- cmd.Parameters.Add(parameter);
- }
- }
- ///添加返回參數ReturnValue
- cmd.Parameters.Add(
- new SqlParameter(RETURNVALUE, SqlDbType.Int,4,ParameterDirection.ReturnValue,
- false,0,0,string.Empty, DataRowVersion.Default,null));
- ///返回創建的SqlCommand對象
- return cmd;
- }
- /// <summary>
- /// 創建一個SqlCommand對象以此來執行存儲過程
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="prams">SQL語句所需參數</param>
- /// <returns>返回SqlCommand對象</returns>
- private SqlCommand CreateSQLCommand(string cmdText, SqlParameter[] prams)
- {
- ///打開數據庫連接
- Open();
- ///設置Command
- SqlCommand cmd = new SqlCommand(cmdText,myConnection);
- ///添加把存儲過程的參數
- if (prams != null)
- {
- foreach (SqlParameter parameter in prams)
- {
- cmd.Parameters.Add(parameter);
- }
- }
- ///添加返回參數ReturnValue
- cmd.Parameters.Add(
- new SqlParameter(RETURNVALUE, SqlDbType.Int,4,ParameterDirection.ReturnValue,
- false,0,0,string.Empty, DataRowVersion.Default,null));
- ///返回創建的SqlCommand對象
- return cmd;
- }
- /// <summary>
- /// 創建一個SqlDataAdapter對象,用此來執行存儲過程
- /// </summary>
- /// <param name="procName">存儲過程的名稱</param>
- /// <param name="prams">存儲過程所需參數</param>
- /// <returns>返回SqlDataAdapter對象</returns>
- private SqlDataAdapter CreateProcDataAdapter(string procName,SqlParameter[] prams)
- {
- ///打開數據庫連接
- Open();
- ///設置SqlDataAdapter對象
- SqlDataAdapter da = new SqlDataAdapter(procName,myConnection);
- da.SelectCommand.CommandType = CommandType.StoredProcedure;
- ///添加把存儲過程的參數
- if (prams != null)
- {
- foreach (SqlParameter parameter in prams)
- {
- da.SelectCommand.Parameters.Add(parameter);
- }
- }
- ///添加返回參數ReturnValue
- da.SelectCommand.Parameters.Add(
- new SqlParameter(RETURNVALUE, SqlDbType.Int,4,ParameterDirection.ReturnValue,
- false,0,0,string.Empty, DataRowVersion.Default,null));
- ///返回創建的SqlDataAdapter對象
- return da;
- }
- /// <summary>
- /// 創建一個SqlDataAdapter對象,用此來執行SQL語句
- /// </summary>
- /// <param name="cmdText">SQL語句</param>
- /// <param name="prams">SQL語句所需參數</param>
- /// <returns>返回SqlDataAdapter對象</returns>
- private SqlDataAdapter CreateSQLDataAdapter(string cmdText,SqlParameter[] prams)
- {
- ///打開數據庫連接
- Open();
- ///設置SqlDataAdapter對象
- SqlDataAdapter da = new SqlDataAdapter(cmdText,myConnection);
- ///添加把存儲過程的參數
- if (prams != null)
- {
- foreach (SqlParameter parameter in prams)
- {
- da.SelectCommand.Parameters.Add(parameter);
- }
- }
- ///添加返回參數ReturnValue
- da.SelectCommand.Parameters.Add(
- new SqlParameter(RETURNVALUE, SqlDbType.Int,4,ParameterDirection.ReturnValue,
- false,0,0,string.Empty, DataRowVersion.Default,null));
- ///返回創建的SqlDataAdapter對象
- return da;
- }
- /// <summary>
- /// 生成存儲過程參數
- /// </summary>
- /// <param name="ParamName">存儲過程名稱</param>
- /// <param name="DbType">參數類型</param>
- /// <param name="Size">參數大小</param>
- /// <param name="Direction">參數方向</param>
- /// <param name="Value">參數值</param>
- /// <returns>新的 parameter 對象</returns>
- public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
- {
- SqlParameter param;
- ///當參數大小爲0時,不使用該參數大小值
- if(Size > 0)
- {
- param = new SqlParameter(ParamName, DbType, Size);
- }
- else
- {
- ///當參數大小爲0時,不使用該參數大小值
- param = new SqlParameter(ParamName, DbType);
- }
- ///創建輸出類型的參數
- param.Direction = Direction;
- if (!(Direction == ParameterDirection.Output && Value == null))
- {
- param.Value = Value;
- }
- ///返回創建的參數
- return param;
- }
- /// <summary>
- /// 傳入輸入參數
- /// </summary>
- /// <param name="ParamName">存儲過程名稱</param>
- /// <param name="DbType">參數類型</param></param>
- /// <param name="Size">參數大小</param>
- /// <param name="Value">參數值</param>
- /// <returns>新的parameter 對象</returns>
- public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
- {
- return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
- }
- /// <summary>
- /// 傳入返回值參數
- /// </summary>
- /// <param name="ParamName">存儲過程名稱</param>
- /// <param name="DbType">參數類型</param>
- /// <param name="Size">參數大小</param>
- /// <returns>新的 parameter 對象</returns>
- public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
- {
- return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
- }
- /// <summary>
- /// 傳入返回值參數
- /// </summary>
- /// <param name="ParamName">存儲過程名稱</param>
- /// <param name="DbType">參數類型</param>
- /// <param name="Size">參數大小</param>
- /// <returns>新的 parameter 對象</returns>
- public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
- {
- return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
- }
- }
- }
SQLHelper
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.