SQL語句簡單封裝

封裝SqlHelper數據庫

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Student_MI
{
    /// <summary>
    /// 數據庫助手類
    /// </summary>
  public   class SqlHelper
    {
        private SqlConnection conn = null;//表示一個到 SQL Server 數據庫的打開的鏈接
        private SqlCommand    cmd = null; //表示要對 SQL Server 數據庫執行的一個 Transact-SQL 語句或存儲過程
        private SqlDataReader sdr = null; //提供一種從 SQL Server 數據庫讀取行的只進流的方式
        /// <summary>
        /// 鏈接數據庫
        /// </summary>
        public SqlHelper()
        {
            string connStr = "Data Source=.;Initial Catalog=StudentManager;Integrated Security=True";
            conn = new SqlConnection(connStr);
        }
        /// <summary>
        /// 打開數據庫鏈接
        /// </summary>
        /// <returns></returns>
        private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
        }

        /// <summary>
        /// 執行不帶參數的增刪改SQL語句或存儲過程
        /// </summary>
        /// <param name="cmdText">增刪改SQL語句或存儲過程</param>
        /// <param name="ct">命令類型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, CommandType ct)// CommandType命令類型
        {
            int res;
            try
            {
                cmd = new SqlCommand(cmdText, GetConn());//向打開的數據庫中插入執行命令
                cmd.CommandType = ct;       //設置要執行命令的類型
                res = cmd.ExecuteNonQuery();//執行增刪查改用到的方法,返回受影響的行數,是一個整數類型
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)//判斷鏈接是否處於打開狀態
                {
                    conn.Close();
                }
            }
            return res;
        }

        /// <summary>
        ///  執行帶參數的增刪改SQL語句或存儲過程
        /// </summary>
        /// <param name="cmdText">增刪改SQL語句或存儲過程</param>
        /// <param name="ct">命令類型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            int res;
            try
            {
                using (cmd = new SqlCommand(cmdText, GetConn()))
                {
                    cmd.CommandType = ct;
                    //cmd.Parameters的Add方法是增長一個參數,增長多個參數的的時候使用一個foreach循環而已  將指定的 SqlParameter 對象添加到 SqlParameterCollection 中
                    //cmd.Parameters的AddRange方法是增長一個參數的數組  將值數組添加到 SqlParameterCollection 的末尾
                    cmd.Parameters.AddRange(paras);
                    res = cmd.ExecuteNonQuery();//執行增刪查改用到的方法,返回受影響的行數,是一個整數類型
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return res;
        }

        /// <summary>
        ///  執行查詢SQL語句或存儲過程
        /// </summary>
        /// <param name="cmdText">查詢SQL語句或存儲過程</param>
        /// <param name="ct">命令類型</param>
        /// <returns>返回DataTable對象</returns>
        public DataTable ExecuteQuery(string cmdText, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            try
            {
                using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    dt.Load(sdr);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return dt;
        }

        /// <summary>
        ///  執行帶參數的查詢SQL語句或存儲過程
        /// </summary>
        /// <param name="cmdText">查詢SQL語句或存儲過程</param>
        /// <param name="paras">參數集合</param>
        /// <param name="ct">命令類型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
  }
}
相關文章
相關標籤/搜索