C#封装DBHelper类

 更新时间:2022年05月04日 10:37:34   作者:農碼一生  
DBHelper类是用类将ADO.NET用方法封装起来,用以减少程序员的工作量。本文为大家提供一个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类的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#中异步和多线程的区别介绍

    C#中异步和多线程的区别介绍

    这篇文章介绍了C#中异步和多线程的区别,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • c# volatile 关键字的拾遗补漏

    c# volatile 关键字的拾遗补漏

    这篇文章主要介绍了c# volatile 关键字的相关资料,帮助大家更好的理解和学习c#的相关知识,感兴趣的朋友可以了解下
    2020-10-10
  • 通过C#实现在Excel单元格中写入文本、或数值

    通过C#实现在Excel单元格中写入文本、或数值

    在商业、学术和日常生活中,Excel 的使用极为普遍,本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中,包括文本、数值、数组、和DataTable数据的输入,需要的朋友可以参考下
    2024-07-07
  • C#中互操作性简介

    C#中互操作性简介

    这篇文章主要介绍了C#中互操作性的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#控制台基础 list<>初始化的两种方法

    C#控制台基础 list<>初始化的两种方法

    这篇文章主要介绍了C#控制台基础 list<>初始化的两种方法,需要的朋友可以参考下
    2016-12-12
  • C#调用mmpeg进行各种视频转换的类实例

    C#调用mmpeg进行各种视频转换的类实例

    这篇文章主要介绍了C#调用mmpeg进行各种视频转换的类,实例分析了C#调用mmpeg操作视频文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C# Base64编码函数

    C# Base64编码函数

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。
    2009-06-06
  • C#的回调机制浅析

    C#的回调机制浅析

    这篇文章主要介绍了C#的回调机制,较为通俗的分析了回调机制的本质与使用时的注意事项,对于C#的学习有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • Unity 数据存储和读取的方法汇总

    Unity 数据存储和读取的方法汇总

    这篇文章主要介绍了Unity 数据存储和读取的方法,本文通过四种方法在 Unity 中实现数据存储和读取方法的案例内容,结合示例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-10-10
  • C# Random类的正确应用方法

    C# Random类的正确应用方法

    这篇文章主要介绍了C# Random类的正确应用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论