一個自定義的C#數據庫操作基礎類 SqlHelper

b5cw 9年前發布 | 1K 次閱讀 C#

SqlHelper其實是我們自己編寫的一個類,使用這個類目的就是讓使用者更方便、更安全的對數據庫的操作,既
是除了在SqlHelper類以外的所有類將不用引用對數據庫操作的任何類與語句,無須擔心數據庫的連接與關閉的問題。

{ 
    public class SQLHelper 
    { 
        private string strConn = null; 
        private SqlConnection Conn = null; 
        private SqlCommand Cmd = null; 
        private SqlDataReader Sqlsdr = null; 
        public SQLHelper() 
        { 
            //利用反射連接數據庫 
            strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString; 
            //strConn = "data source=192.168.24.83;initial catalog=NewsSystem;user id=sa;password=123456"; 
            Conn = new SqlConnection(strConn); 
        }

    /// <summary> 
    /// 狀態 
    /// </summary> 
    /// <returns>SqlConnection</returns> 
    private SqlConnection GetConn() 
    { 
        if (Conn.State == ConnectionState.Closed) 
        { 
            Conn.Open(); 
        } 
        return Conn; 
    } 

    /// <summary> 
    /// 執行不帶參數的增刪改操作 
    /// </summary> 
    /// <param name="CmdText">執行的SQL語句或存儲過程</param> 
    /// <param name="CmdType">類型</param> 
    /// <returns>增刪改的操作數</returns> 

    public int ExecuteNonQuery(string CmdText, CommandType CmdType) 
    { 
        //數據庫連接語句 
        int res; 
        try 
        { 
            Cmd = new SqlCommand(CmdText, GetConn()); 
            Cmd.CommandType = CmdType; 
            res = Cmd.ExecuteNonQuery(); 

        } 
        catch (Exception ex) 
        { 

            throw ex; 
        } 
        finally 
        { 
            if (Conn.State == ConnectionState.Open) 
            { 
                Conn.Close(); 
            } 
        } 
        return res; 
    } 

    /// <summary> 
    /// 執行帶參數的增刪改操作 
    /// </summary> 
    /// <param name="CmdText">執行的SQL語句或存儲過程</param> 
    /// <param name="Parameters">參數</param> 
    /// <param name="CmdType">類型(SQL語句或存儲過程)</param> 
    /// <returns>增刪改的操作數</returns> 
    public int ExecuteNonQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType) 
    { 
        int res; 
        try 
        { 
            Cmd.Parameters.AddRange(Parameters); 
            Cmd = new SqlCommand(CmdText, GetConn()); 
            Cmd.CommandType = CmdType; 
            res = Cmd.ExecuteNonQuery(); 
        } 
        catch (Exception ex) 
        { 

            throw ex; 
        } 
        finally 
        { 
            if (Conn.State == ConnectionState.Open) 
            { 
                Conn.Close(); 
            } 
        } 
        return res; 
    } 


    /// <summary> 
    /// 不帶參數的查詢 
    /// </summary> 
    /// <param name="CmdText">執行的SQL語句或存儲過程</param> 
    /// <param name="CmdType">類型</param> 
    /// <returns>查詢的數據</returns> 
    public DataTable ExecuteQuery(string CmdText, CommandType CmdType) 
    { 
        DataTable dt = new DataTable(); 

        using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)) 
        { 
            Cmd = new SqlCommand(CmdText, GetConn()); 
            Cmd.CommandType = CmdType; 
            dt.Load(Sqlsdr); 
        } 
        return dt; 
    } 

    /// <summary> 
    /// 帶參數的查詢 
    /// </summary> 
    /// <param name="CmdText">SQL語句或存儲過程</param> 
    /// <param name="Parameters">參數</param> 
    /// <param name="CmdType">類型</param> 
    /// <returns>查詢的數據</returns> 
    public DataTable ExecuteQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType) 
    { 
        DataTable dt = new DataTable(); 

        using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)) 
        { 
            Cmd = new SqlCommand(CmdText, GetConn()); 
            Cmd.CommandType = CmdType; 
            Cmd.Parameters.AddRange(Parameters); 
            dt.Load(Sqlsdr); 
        } 
        return dt; 
    } 
} 

}</pre>

 本文由用戶 b5cw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!