我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#怎么封装DBHelper类

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#怎么封装DBHelper类

本文小编为大家详细介绍“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类”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#怎么封装DBHelper类

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#怎么封装DBHelper类

本文小编为大家详细介绍“C#怎么封装DBHelper类”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么封装DBHelper类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。DBHelper从字面上理解为“数
2023-06-30

C++链表类怎么封装

这篇文章主要介绍“C++链表类怎么封装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++链表类怎么封装”文章能帮助大家解决问题。1.CList.h#ifndef CLIST_H#define CL
2023-06-30

C#中ObjectARX .NET封装类的访问怎么实现

这篇文章主要讲解了“C#中ObjectARX .NET封装类的访问怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中ObjectARX .NET封装类的访问怎么实现”吧!1) 启动
2023-06-18

C++中怎么封装Socket库

C++中怎么封装Socket库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下: if((ErrorCode=WSAStartup(MAKEWORD(2,1),&ws
2023-06-17

C++类与封装的概念是什么及怎么使用

这篇文章主要介绍“C++类与封装的概念是什么及怎么使用”,在日常操作中,相信很多人在C++类与封装的概念是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++类与封装的概念是什么及怎么使用”的疑
2023-06-30

Pandas怎么封装Excel工具类

这篇文章主要介绍了Pandas怎么封装Excel工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Pandas怎么封装Excel工具类文章都会有所收获,下面我们一起来看看吧。引言Excel是一种广泛使用的电子
2023-07-06

python中类怎么定义与封装

在Python中,可以使用class关键字来定义一个类。类的定义包括类名、类的属性和方法。类的封装是指将类的属性和方法封装起来,只允许通过类的接口访问和修改属性,以及调用方法。这样可以隐藏类的实现细节,提高代码的可维护性和安全性。下面是一个
2023-10-19

PHP中怎么对类进行封装

PHP中怎么对类进行封装,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。public:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修
2023-06-17

Android中怎么利用PagerAdapter封装类

Android中怎么利用PagerAdapter封装类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ViewPager是android的support库中的一个控件,也是一
2023-05-30

python中的类怎么定义与封装

在Python中,可以使用关键字`class`来定义一个类。类是一种抽象的数据类型,可用于封装数据和方法。下面是一个简单的类的定义与封装的示例:```pythonclass Person:def __init__(self, name, a
2023-10-11

java封装进程的类怎么使用

要使用Java封装进程的类,首先需要导入相应的类库。在Java中,可以使用ProcessBuilder类来创建和控制进程。下面是一个简单的示例代码,演示如何使用ProcessBuilder类来运行一个命令并获取其输出:import jav
java封装进程的类怎么使用
2024-03-14

怎么在python中封装一个pyqt5类

怎么在python中封装一个pyqt5类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录