SQLHelper幫助類


這幾天搞了個簡單的三層,數據庫操作的幫助類實現

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;//DataSet/DataTable/DataRow/DataCol
using System.Data.SqlClient;//SqlConnection/SqlCommand/SqlDataAdapter/SqlDataReader
using System.Reflection;//反射命名空間

namespace DAL
{
    /// <summary>
    /// 數據庫操作幫助類
    /// </summary>
    public static class SQLHelper
    {
        //1.准備連接字符串
        public static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

        #region 2.執行查詢多行語句 - 返回數據表 +static DataTable ExcuteDataTable(string strSelectCmd, params SqlParameter[] paras)
        /// <summary>
        /// 2.執行查詢多行語句 - 返回數據表
        /// </summary>
        /// <param name="strSelectCmd"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static DataTable ExcuteDataTable(string strSelectCmd, params SqlParameter[] paras)
        {
            //1.創建連接通道
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                //2.創建適配器
                SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
                //2.1設置查詢命令的參數
                da.SelectCommand.Parameters.AddRange(paras);
                //3.數據表
                DataTable dt = new DataTable();
                //4.將數據查詢並填充到數據表中
                da.Fill(dt);
                return dt;
            }
        }
        #endregion

        #region  2.0升級泛型版 ------ 執行查詢多行語句 - 返回數據表
        /// <summary>
        /// 2.0升級泛型版 ------ 執行查詢多行語句 - 返回數據表
        /// </summary>
        /// <typeparam name="T2">泛型類型</typeparam>
        /// <param name="strSelectCmd">查詢sql語句</param>
        /// <param name="paras">查詢參數</param>
        /// <returns>泛型集合</returns>
        public static List<T2> ExcuteList<T2>(string strSelectCmd, params SqlParameter[] paras)
        {
            //1.創建連接通道
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                //2.創建適配器
                SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
                //2.1設置查詢命令的參數
                da.SelectCommand.Parameters.AddRange(paras);
                //3.數據表
                DataTable dt = new DataTable();
                //4.將數據查詢並填充到數據表中
                da.Fill(dt);
                //5.將DataTable轉成泛型集合List<T2>
                if (dt.Rows.Count > 0)
                {
                    //6.創建泛型集合對象
                    List<T2> list = new List<T2>();
                    //7.遍歷數據行,將行數據存入 實體對象中,並添加到 泛型集合中list
                    foreach (DataRow row in dt.Rows)
                    {//7.1先獲得泛型的類型(里面包含該類的所有信息 屬性 方法 字段...........)
                        Type t = typeof(T2);
                        //7.2根據類型創建該類型的對象
                        T2 model = (T2)Activator.CreateInstance(t);// new MODEL.Classes()
                        //7.3根據類型 獲得 該類型的 所有屬性定義
                        PropertyInfo[] properties = t.GetProperties();
                        //7.4遍歷屬性數組
                        foreach (PropertyInfo p in properties)
                        {
                            //7.4.1獲得屬性名,作為列名
                            string colName = p.Name;
                            //7.4.2根據列名 獲得當前循環行對應列的值
                            object colValue = row[colName];
                            //7.4.3將 列值 賦給 model對象的p屬性
                            //model.ID=colValue;
                            p.SetValue(model, colValue, null);
                        }
                        //7.5將裝好 了行數據的 實體對象 添加到 泛型集合中
                        list.Add(model);
                    }
                    return list;
                }
            }
            return null;
        }
        #endregion

        #region 3.執行查詢多行語句 - 返回數據讀取器  +static SqlDataReader ExcuteDataReader(string strSelectCmd, params SqlParameter[] paras)
        /// <summary>
        /// 執行查詢多行語句 - 返回數據讀取器
        /// </summary>
        /// <param name="strSelectCmd"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static SqlDataReader ExcuteDataReader(string strSelectCmd, params SqlParameter[] paras)
        {
            SqlConnection conn = null;
            try
            {
                //1.創建連接通道
                conn = new SqlConnection(connStr);
                //2.創建命令對象
                SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                //3.添加命令參數
                cmd.Parameters.AddRange(paras);
                //4.打開連接
                conn.Open();
                //5.創建讀取器(當關閉此讀取器時,會自動關閉連接通道)
                SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//當關閉此讀取器時,會自動關閉連接通道
                //6.返回讀取器
                return dr;
            }
            catch (Exception ex)
            {
                conn.Dispose();
                throw ex;
            }
        }
        #endregion

        #region 4.執行非查詢語句(增刪改) +static int ExcuteNonQuery(string strCmd, params SqlParameter[] paras)
        /// <summary>
        /// 執行非查詢語句(增刪改)
        /// </summary>
        /// <param name="strCmd"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static int ExcuteNonQuery(string strCmd, params SqlParameter[] paras)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(strCmd, conn);
                cmd.Parameters.AddRange(paras);
                conn.Open();
                return cmd.ExecuteNonQuery();
            }
        }
        #endregion

        #region 5.查詢結果集里的第一個單元格的值(單個值)+static object ExcuteScalar(string strSelectCmd, params SqlParameter[] paras)
        /// <summary>
        /// 查詢結果集里的第一個單元格的值(單個值)
        /// </summary>
        /// <param name="strSelectCmd"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static object ExcuteScalar(string strSelectCmd, params SqlParameter[] paras)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                cmd.Parameters.AddRange(paras);
                conn.Open();
                return cmd.ExecuteScalar();
            }
        }
        #endregion

        #region 6.查詢結果集里的第一個單元格的值(單個值)-- 泛型版本 + static T ExcuteScalar<T>(string strSelectCmd, params SqlParameter[] paras)
        /// <summary>
        /// 查詢結果集里的第一個單元格的值(單個值)-- 泛型版本
        /// </summary>
        /// <typeparam name="T">類型參數</typeparam>
        /// <param name="strSelectCmd"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static T ExcuteScalar<T>(string strSelectCmd, params SqlParameter[] paras)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                cmd.Parameters.AddRange(paras);
                conn.Open();
                object o = cmd.ExecuteScalar();
                return (T)Convert.ChangeType(o, typeof(T));
            }
        }
        #endregion
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM