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();
        //对应的配置文件如下:
        //
        //  
        //

        //读取配置文件ConnectionStrings节点读取字符串(需要添加引用System.Configuration)
        //public static string connStr = ConfigurationManager.ConnectionStrings["DefaultConn"].ConnectionString;
        //对应配置文件如下:
        //
        //    
        //

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

        #region 连接数据库
        /// 
        /// 连接数据库
        /// 
        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语句前准备
        /// 
        /// 准备执行一个SQL语句
        /// 
        /// 需要执行的SQL语句
        public static void PrepareSql(string sql)
        {
            OpenConn(); //打开数据库连接
            adp = new SqlDataAdapter(sql, conn);
        }
        #endregion

        #region 设置和获取sql语句的参数
        /// 
        /// 设置传入参数
        /// 
        /// 参数名称
        /// 参数值
        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语句
        /// 
        /// 执行非查询SQL语句
        /// 
        /// 受影响行数
        public static int ExecNonQuery()
        {
            int result = adp.SelectCommand.ExecuteNonQuery();
            conn.Close();
            return result;
        }
        /// 
        /// 执行查询SQL语句
        /// 
        /// DataTable类型查询结果
        public static DataTable ExecQuery()
        {
            DataTable dt = new DataTable();
            adp.Fill(dt);
            conn.Close();
            return dt;
        }
        /// 
        /// 执行查询SQL语句
        /// 
        /// SqlDataReader类型查询结果,SqlDataReader需要手动关闭
        public static SqlDataReader ExecDataReader()
        {
            return adp.SelectCommand.ExecuteReader(CommandBehavior.CloseConnection);
        }
        /// 
        /// 执行查询SQL语句
        /// 
        /// 查询结果第一行第一列
        public static object ExecScalar()
        {
            object obj = adp.SelectCommand.ExecuteScalar();
            conn.Close();
            return obj;
        }
        #endregion
    }
}

到此这篇关于C#封装DBHelper类的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(C#封装DBHelper类)