深入理解DbHelper类

一、DbHelper类怎么调用

DbHelper是一个通用的数据库操作类,可以用于各种不同的数据源,比如SQL Server、MySQL、Oracle等等。它是封装ADO.NET操作的一个类,可以简化常见的数据库操作。我们在项目中使用DbHelper类来连接并操作数据库。

DbHelper的调用方式非常简单,我们只需要在需要用到它的文件中加入以下using语句:

using DbHelper;

之后就可以直接使用DbHelper类中的方法,比如连接数据库、执行SQL语句并返回结果等等。

二、DbHelper用Model类

在操作数据库时,我们通常会将数据库中的表映射为一个个Model类,在代码中使用Model类来操作数据库。可以将DbHelper和Model类结合使用,提高开发效率。

在Model类中可以定义各种属性和方法,用于操作数据库中的数据。而在使用DbHelper类时,只需要通过它提供的方法连接数据库、执行增删改查等操作,并将结果存储到Model类中,就可以对数据进行操作。

三、DbHelper类连接数据库

DbHelper类提供了多种方法来连接数据库,包括连接字符串和Connection对象。下面是通过连接字符串连接数据库的示例:

string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=Demo;Integrated Security=True;";
DbHelper dbHelper = new DbHelper(connectionString);

在实例化DbHelper类时,我们需要传入连接字符串作为参数。通过这个连接字符串,DbHelper就可以连接到指定的数据库中并进行操作。

四、DbHelper使用教程

这里是一个简单的DbHelper使用教程,用于连接并操作SQL Server数据库。我们需要将以下代码复制到自己的项目中,并修改连接字符串和SQL语句等参数:

string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=Demo;Integrated Security=True;";
DbHelper dbHelper = new DbHelper(connectionString);

//执行查询操作
string sql = "select * from Customers where CustomerID=@CustomerID";
SqlParameter[] parameters = { new SqlParameter("@CustomerID", "ALFKI") };
DataTable dataTable = dbHelper.ExecuteDataTable(sql, parameters);

//将查询结果赋值给Model类
Customer customer = new Customer();
customer.CustomerID = dataTable.Rows[0]["CustomerID"].ToString();
customer.CompanyName = dataTable.Rows[0]["CompanyName"].ToString();
//其他属性赋值...

//执行插入操作
sql = "insert into Customers(CustomerID, CompanyName) values(@CustomerID, @CompanyName)";
parameters = new SqlParameter[] {
    new SqlParameter("@CustomerID", customer.CustomerID),
    new SqlParameter("@CompanyName", customer.CompanyName)
};
int rows = dbHelper.ExecuteNonQuery(sql, parameters);

在上面的代码中,我们首先实例化了一个DbHelper类,然后执行了一个查询操作,将结果存储到DataTable中。接着,我们将查询结果赋值给了一个Model类的实例。最后,我们执行了一个插入操作,将Model类中的属性值插入到数据库中。

五、DbHelper下载

DbHelper是一个开源的项目,可以在GitHub上免费下载。使用DbHelper类时,需要将它的源代码添加到自己的项目中。下载地址:https://github.com/laomms/DbHelper

六、DbHelperSql

DbHelperSql是一个专门用于连接SQL Server数据库的DbHelper扩展类。它在DbHelper基础上,增加了一些常用的SQL Server数据库操作方法。使用DbHelperSql可以更加方便地进行数据库操作。

以下是一个使用DbHelperSql类连接并操作SQL Server数据库的示例:

string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=Demo;Integrated Security=True;";
DbHelperSql dbHelperSql = new DbHelperSql(connectionString);

//执行查询操作
string sql = "select * from Customers where CustomerID=@CustomerID";
SqlParameter[] parameters = { new SqlParameter("@CustomerID", "ALFKI") };
DataTable dataTable = dbHelperSql.ExecuteDataTable(sql, parameters);

//将查询结果赋值给Model类
Customer customer = new Customer();
customer.CustomerID = dataTable.Rows[0]["CustomerID"].ToString();
customer.CompanyName = dataTable.Rows[0]["CompanyName"].ToString();
//其他属性赋值...

//执行插入操作
sql = "insert into Customers(CustomerID, CompanyName) values(@CustomerID, @CompanyName)";
parameters = new SqlParameter[] {
    new SqlParameter("@CustomerID", customer.CustomerID),
    new SqlParameter("@CompanyName", customer.CompanyName)
};
int rows = dbHelperSql.ExecuteNonQuery(sql, parameters);

七、DbHelper类基本代码

以下是DbHelper类的基本代码,可以用于连接和操作各种不同类型的数据库:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;

namespace DbHelper
{
    public class DbHelper
    {
        protected DbProviderFactory factory;
        protected DbConnection connection;

        public DbHelper(string connectionString)
        {
            factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
            connection = factory.CreateConnection();
            connection.ConnectionString = connectionString;
        }

        public virtual DataTable ExecuteDataTable(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                using (DbDataAdapter adapter = factory.CreateDataAdapter())
                {
                    adapter.SelectCommand = command;
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
            }
        }

        public virtual object ExecuteScalar(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                return command.ExecuteScalar();
            }
        }

        public virtual int ExecuteNonQuery(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                return command.ExecuteNonQuery();
            }
        }

        public virtual DbDataReader ExecuteReader(string sql, params DbParameter[] parameters)
        {
            DbCommand command = connection.CreateCommand();
            command.CommandText = sql;
            foreach (DbParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }
            return command.ExecuteReader(CommandBehavior.CloseConnection);
        }

        public virtual void Open()
        {
            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }
        }

        public virtual void Close()
        {
            if (connection.State != ConnectionState.Closed)
            {
                connection.Close();
            }
        }
    }
}

八、DbHelper.cs代码

以下是DbHelper.cs文件的代码,包括了DbHelper类的基本实现以及一些扩展方法。这个文件可以直接添加到项目中,用于连接和操作SQL Server数据库。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;

namespace DbHelper
{
    public class DbHelper
    {
        protected DbProviderFactory factory;
        protected DbConnection connection;

        public DbHelper(string connectionString)
        {
            factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
            connection = factory.CreateConnection();
            connection.ConnectionString = connectionString;
        }

        public virtual DataTable ExecuteDataTable(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                using (DbDataAdapter adapter = factory.CreateDataAdapter())
                {
                    adapter.SelectCommand = command;
                    DataTable dataTable = new DataTable();
                    adapter.Fill(dataTable);
                    return dataTable;
                }
            }
        }

        public virtual object ExecuteScalar(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                return command.ExecuteScalar();
            }
        }

        public virtual int ExecuteNonQuery(string sql, params DbParameter[] parameters)
        {
            using (DbCommand command = connection.CreateCommand())
            {
                command.CommandText = sql;
                foreach (DbParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
                return command.ExecuteNonQuery();
            }
        }

        public virtual DbDataReader ExecuteReader(string sql, params DbParameter[] parameters)
        {
            DbCommand command = connection.CreateCommand();
            command.CommandText = sql;
            foreach (DbParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }
            return command.ExecuteReader(CommandBehavior.CloseConnection);
        }

        public virtual void Open()
        {
            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }
        }

        public virtual void Close()
        {
            if (connection.State != ConnectionState.Closed)
            {
                connection.Close();
            }
        }
    }

    public static class DbHelperExtensions
    {
        public static int ExecuteNonQuery(this DbHelper dbHelper, string sql, Dictionary<string, object> parameters)
        {
            List<DbParameter> dbParameters = new List<DbParameter>();
            foreach (KeyValuePair<string, object> parameter in parameters)
            {
                dbParameters.Add(dbHelper.CreateParameter(parameter.Key, parameter.Value));
            }
            return dbHelper.ExecuteNonQuery(sql, dbParameters.ToArray());
        }

        public static object ExecuteScalar(this DbHelper dbHelper, string sql, Dictionary<string, object> parameters)
        {
            List<DbParameter> dbParameters = new List<DbParameter>();
            foreach (KeyValuePair<string, object> parameter in parameters)
            {
                dbParameters.Add(dbHelper.CreateParameter(parameter.Key, parameter.Value));
            }
            return dbHelper.ExecuteScalar(sql, dbParameters.ToArray());
        }

        public static DataTable ExecuteDataTable(this DbHelper dbHelper, string sql, Dictionary<string, object> parameters)
        {
            List<DbParameter> dbParameters = new List<DbParameter>();
            foreach (KeyValuePair<string, object> parameter in parameters)
            {
                dbParameters.Add(dbHelper.CreateParameter(parameter.Key, parameter.Value));
            }
            return dbHelper.ExecuteDataTable(sql, dbParameters.ToArray());
        }

        public static DbParameter CreateParameter(this DbHelper dbHelper, string name, object value)
        {
            return dbHelper.factory.CreateParameter(name, value);
        }

        public static DbParameter CreateParameter(this DbProviderFactory factory, string name, object value)
        {
            DbParameter parameter = factory.CreateParameter();
            parameter.ParameterName = name;
            parameter.Value = value;
            return parameter;
        }
    }
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/251016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-13 13:31
下一篇 2024-12-13 13:32

相关推荐

  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25
  • 深入理解byte转int

    一、字节与比特 在讨论byte转int之前,我们需要了解字节和比特的概念。字节是计算机存储单位的一种,通常表示8个比特(bit),即1字节=8比特。比特是计算机中最小的数据单位,是…

    编程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什么是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一个内置小部件,它可以监测数据流(Stream)中数据的变…

    编程 2025-04-25
  • 深入探讨OpenCV版本

    OpenCV是一个用于计算机视觉应用程序的开源库。它是由英特尔公司创建的,现已由Willow Garage管理。OpenCV旨在提供一个易于使用的计算机视觉和机器学习基础架构,以实…

    编程 2025-04-25
  • 深入了解scala-maven-plugin

    一、简介 Scala-maven-plugin 是一个创造和管理 Scala 项目的maven插件,它可以自动生成基本项目结构、依赖配置、Scala文件等。使用它可以使我们专注于代…

    编程 2025-04-25
  • 深入了解LaTeX的脚注(latexfootnote)

    一、基本介绍 LaTeX作为一种排版软件,具有各种各样的功能,其中脚注(footnote)是一个十分重要的功能之一。在LaTeX中,脚注是用命令latexfootnote来实现的。…

    编程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一个程序就是一个模块,而一个模块可以引入另一个模块,这样就形成了包。包就是有多个模块组成的一个大模块,也可以看做是一个文件夹。包可以有效地组织代码和数据…

    编程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r为前缀的字符串。r字符串中的反斜杠(\)不会被转义,而是被当作普通字符处理,这使得r字符串可以非常方便…

    编程 2025-04-25
  • 深入剖析MapStruct未生成实现类问题

    一、MapStruct简介 MapStruct是一个Java bean映射器,它通过注解和代码生成来在Java bean之间转换成本类代码,实现类型安全,简单而不失灵活。 作为一个…

    编程 2025-04-25
  • 深入探讨冯诺依曼原理

    一、原理概述 冯诺依曼原理,又称“存储程序控制原理”,是指计算机的程序和数据都存储在同一个存储器中,并且通过一个统一的总线来传输数据。这个原理的提出,是计算机科学发展中的重大进展,…

    编程 2025-04-25

发表回复

登录后才能评论