C#可视化编程——DBHelper工具类

C#可视化编程——DBHelper工具类

  • 介绍

DBHepler工具类,通过类将ADO.NET用方法封装起来,进而减少程序员的工作量。如连接数据库、数据库的增删改查方法等等。

需要注意一点,在DBHelper工具类中的公共字段和方法均使用静态方法,且static字段、方法、属性均属于class类,不属于某一个确定的对象,故访问它们时应当使用class类名,在访问非静态的属性、字段和方法时需要new一个新的对象。

try、catch、finally结构的区别:

try检测括号内代码正确与否,若错误不会结束程序,二十跳到catch中,输出catch中的代码;若正确则catch不执行。

finally语句无论是否错误均会执行。

  • 如何编写DBHelper工具类
  1. 连接字符串

public static string connStr=”server:.;Initial Catalog=数据库名;Integrated Security=”True”;

  1. 声明所需要的对象
  1. SqlConnection类:主要用于连接Sql Server数据库

其常用属性有:ConnectionString——获取/设置用于打开数据库的字符串(即上一步设置的字符串),该连接字符串一般会在webconfig文件中配置。

常用方法:Open——用于打开SQL Sever数据库;Close——关闭现有打开的连接,如在程序中获取数据后,则调用该方法关闭数据库连接;CreateCommand——用于创建SqlCommand命令对象,该对象主要用于执行一些Sql语句。

  1. DataTable——用于临时保存数据的网络虚拟表,表示内存中数据的一个二维表,同时也是后台数据源和前台适配器之间的适配器。

几个常用属性:Columns——获取该表的列的集合;Rows——获取该表的行的集合;Constraints——获取由该表维护的约束的集合。

  1. SqlDataAdapte——Sql Server与DataSet间的桥接器,用于检索和保存数据
  2. SqlDataReader——主要用于读取查询类执行sql命令产生的查询结果或存储过程中返回的记录。注意SqlDataReader在指向第一条记录之前不可以直接读取,而是通过SqlDataReader.Read()方法读取下一条指令,直至全部读取完成。也可以使用Get方法来获取记录中某个字段的值,该方法可以将指定字段的数据按照特定的数据类型读取。访问字段还可以使用Item属性,其通过返回字段索引(注意索引从0开始)或字段名称对应的字段值。通常使用Command类中的ExecuteRader方法来创建DataReader对象。
  1. 针对连接对象,初始化数据库连接,判断连接是否为空、是否关闭和中断
  2. 执行sql语句,查看增删改查返回结果是否成功,这里会使用到SqlCommand命令对象执行命令
using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsStu
{
    //dbhelper帮助工具
    internal class DBHelper
    {
        //连接字符串
        public static string connStr = "server=.;Initial Catalog=db_student;Integrated Security=True;";
        //生命所需对象
        public static SqlConnection conn = null;//连接对象
        public static SqlCommand cmd = null;//命令对象
        public static DataTable dt = null;//DataTable对象
        public static SqlDataAdapter sda = null;//SqlDataAdapter对象
        public static SqlDataReader dr = null;//SqlDataReader对象
        public static void InitConnection()//初始化连接--针对连接对象
        {
            //判断连接对象是否为控股,为空则创建
            if (conn == null)
            {
                conn = new SqlConnection(connStr);
            }
            //判断连接是否关闭,关闭则打开
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            //判断连接是否中断,若中断则重启
            if (conn.State == ConnectionState.Broken)
            {
                conn.Close();
                conn.Open();
            }
        }
        //执行增删改查返回是否成功
        public static bool ExecuteSql(string sql)
        {
            //打开连接
            InitConnection();
            //创建命令对象
            SqlCommand cmd = new SqlCommand(sql,conn);
            //执行命令
            int result = cmd.ExecuteNonQuery();
            //关闭连接
            conn.Close();
            //返回结果
            /*return result > 0;*/
            if (result > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        //执行查询,返回SqlDataReader对象--非断开式
        public static SqlDataReader GetDataReader(string sql)
        {
            InitConnection();
            //创建命令对象
            cmd = new SqlCommand(sql,conn);
            //执行命令返回SqlDataReader对象,并自动关闭连接对象
            //这里使用CommandBehavior枚举的CloseConnection字段,用于关闭关联的DataReader和Connection对象
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        //执行查询
        public static DataTable GetDataTable(string sql)
        {
            InitConnection();
            //创建DataTable对象
            dt = new DataTable();
            //创建SqlDataAdapter对象
            sda = new SqlDataAdapter(sql, conn);
            //填充数据
            sda.Fill(dt);
            //关闭连接
            conn.Close();
            //返回DataTable对象
            return dt;
        }
        
        //执行聚合函数,返回首行首列单个数据
        public static object ExecuteScalar(string sql)
        {
            InitConnection();
            //创建命令对象
            cmd = new SqlCommand(sql, conn);
            //执行命令,获取结果
            object result = cmd.ExecuteScalar();
            conn.Close();
            return result;

        }
        //定义一个公共访问类,用于设置窗口跳转
        internal class GlobalVar
        {
            private static string _StrPsp = "";//私有静态字段
            //定义一个静态属性
            public static string StrPsp
            {
                get
                {
                    return _StrPsp;
                }
                set
                {
                    _StrPsp = value;
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值