中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#怎么封裝DBHelper類

發布時間:2022-05-05 09:28:32 來源:億速云 閱讀:127 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“C#怎么封裝DBHelper類”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C#怎么封裝DBHelper類”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

DBHelper從字面上理解為“數據庫幫助類”,由于持久層需要與數據庫進行交互,因此每次交互的時候都會重復去加載驅動、填寫數據庫連接信息、建立(獲取)數據庫連接、關閉數據庫,所以導致代碼中出現了大量的冗余代碼,因此把這些重復需要執行的代碼抽取出來,就成了一個DBHelper,一個簡單的DBHelper提供了最基礎的數據庫初始化連接及驅動,提供了連接數據庫的API和關閉數據庫的API,通常的做法是把這些API做成靜態的,使用的時候直接通過 類.API 進行調用,因此大量的簡化了代碼的書寫,提高了代碼的可維護性,同時也利于更換數據庫及驅動。

詳細代碼:

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

namespace WindowsFormsApplication1
{
    class DBHelper
    {
        //SQL連接字符串-SQL身份認證方式登錄
        public static string connStr = "server=.;database=DBTEST;uid=sa;pwd=123456;";

        //SQL連接字符串-Windows身份認證方式登錄
        //public static string connStr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBTEST;Data Source=.";

        //讀取配置文件appSettings節點讀取字符串(需要添加引用System.Configuration)
        //public static string connStr = ConfigurationManager.AppSettings["DefaultConn"].ToString();
        //對應的配置文件如下:
        //<appSettings>
        //  <add key="DefaultConn" value="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBTEST;Data Source=."/>
        //</appSettings>

        //讀取配置文件ConnectionStrings節點讀取字符串(需要添加引用System.Configuration)
        //public static string connStr = ConfigurationManager.ConnectionStrings["DefaultConn"].ConnectionString;
        //對應配置文件如下:
        //<connectionStrings>
        //    <add name="DefaultConn" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBTEST;Data Source=."/>
        //</connectionStrings>

        public static SqlConnection conn = null;
        public static SqlDataAdapter adp = null;

        #region 連接數據庫
        /// <summary>
        /// 連接數據庫
        /// </summary>
        public static void OpenConn()
        {
            if (conn == null)
            {
                conn = new SqlConnection(connStr);
                conn.Open();
            }
            if (conn.State == System.Data.ConnectionState.Closed)
            {
                conn.Open();
            }
            if (conn.State == System.Data.ConnectionState.Broken)
            {
                conn.Close();
                conn.Open();
            }
        }
        #endregion

        #region 執行SQL語句前準備
        /// <summary>
        /// 準備執行一個SQL語句
        /// </summary>
        /// <param name="sql">需要執行的SQL語句</param>
        public static void PrepareSql(string sql)
        {
            OpenConn(); //打開數據庫連接
            adp = new SqlDataAdapter(sql, conn);
        }
        #endregion

        #region 設置和獲取sql語句的參數
        /// <summary>
        /// 設置傳入參數
        /// </summary>
        /// <param name="parameterName">參數名稱</param>
        /// <param name="parameterValue">參數值</param>
        public static void SetParameter(string parameterName, object parameterValue)
        {
            parameterName = "@" + parameterName.Trim();
            if (parameterValue == null)
                parameterValue = DBNull.Value;
            adp.SelectCommand.Parameters.Add(new SqlParameter(parameterName, parameterValue));
        }
        #endregion

        #region 執行SQL語句
        /// <summary>
        /// 執行非查詢SQL語句
        /// </summary>
        /// <returns>受影響行數</returns>
        public static int ExecNonQuery()
        {
            int result = adp.SelectCommand.ExecuteNonQuery();
            conn.Close();
            return result;
        }
        /// <summary>
        /// 執行查詢SQL語句
        /// </summary>
        /// <returns>DataTable類型查詢結果</returns>
        public static DataTable ExecQuery()
        {
            DataTable dt = new DataTable();
            adp.Fill(dt);
            conn.Close();
            return dt;
        }
        /// <summary>
        /// 執行查詢SQL語句
        /// </summary>
        /// <returns>SqlDataReader類型查詢結果,SqlDataReader需要手動關閉</returns>
        public static SqlDataReader ExecDataReader()
        {
            return adp.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection);
        }
        /// <summary>
        /// 執行查詢SQL語句
        /// </summary>
        /// <returns>查詢結果第一行第一列</returns>
        public static object ExecScalar()
        {
            object obj = adp.SelectCommand.ExecuteScalar();
            conn.Close();
            return obj;
        }
        #endregion
    }
}

讀到這里,這篇“C#怎么封裝DBHelper類”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正镶白旗| 枣阳市| 黎川县| 雅江县| 卓尼县| 祁东县| 保定市| 福建省| 深圳市| 峨边| 台安县| 黄浦区| 四会市| 九寨沟县| 南华县| 东乡族自治县| 白朗县| 洛南县| 汉阴县| 虞城县| 获嘉县| 皮山县| 黎城县| 濮阳市| 仲巴县| 平定县| 明光市| 汕头市| 湖北省| 苍梧县| 固始县| 松潘县| 洪湖市| 汕尾市| 胶南市| 吴川市| 冷水江市| 新郑市| 兴安盟| 浮山县| 青河县|