加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【VB.NET】sqlhelper

发布时间:2020-12-17 07:36:01 所属栏目:百科 来源:网络整理
导读:什么是sqlhelper SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接( SqlConnection ),SqlCommand,SqlDataReader等等。SqlHelper封装过后通常是只需要给方法传入一些参数如数据

什么是sqlhelper

SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

为什么要用sqlhelper

简单的说就是简化操作,提高效率。

我们都知道D层用于执行与数据库有关的操作。每当执行与数据库有关的操作时,就需要执行一遍数据库操作的语言,然后对其进行增、删、改、查,这时就会出现很多重复或者说类似的代码,会出现冗余,也容易产生错误。

为了提高效率,我们把这些数据库操作语言封装成一个类,再对其进行操作。既使D层减负,也使代码减少耦合,程序的执行更加高效。


怎么用sqlhelper

(一)基本介绍

1.数据库操作包括增删改查4类,简单点,可以划分成两类:查(查)、更新(增删改)。

据此,sqlhelper类的内容主要分为4类:

1)带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数

2)不带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数

3)带参数的查询语句或存储过程 ---------------返回结果集

4)不带参数的查询语句或存储过程 ---------------返回结果集

2.该类中实现的方法包括:

(1)ExecuteNonQuery:用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。 (针对更新操作)
(2)ExecuteReader:用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。 (针对查询操作)
(3)ExecuteDataset:返回DataSet对象,该对象包含由某一命令返回的结果集。


(二)内容详解

1.带参数VS不带参数

带参数表示有传入值,不带参数表示无传入值。

在进行数据库操作时,我们需要得到的信息无非分为——全部信息、部分信息。当我们需要一张表的全部信息时,不需要参数,但如果是部分信息,此时要用到查询条件,也就需要参数。

2.返回值

就是指方法(函数)结束后需要返回给调用者的值。我们定义一种方法,肯定是想得到相应的结果,返回值就是给出我们一个结果。

比如,我提出一个问题“你今天吃早饭了吗?”“吃”或者“没吃”是回答也是返回值。

3.返回受影响行数VS返回

返回受影响行数和返回表都是返回值的子类。

当我们进行对数据库的更新(增删改)操作时,需返回受影响行数,反映信息是否被修改。此时,如果受影响行数大于0,说明可以查到数据,信息更新成功,否则结果相反。

当我们进行对数据库的查询操作时,需要返回DataTable虚拟表(它是一个临时保存数据的网格虚拟表),如果表的行数大于0,说明表中存在数据,可以查到记录,否则说明无法查到记录。


(三)代码

配置文件
	<appSettings>
		 <add key="sqlConnectStr"  value="Server=.;Database=charge_sys;User ID=sa;Password=123456"/>
         <add key="DB"  value="DAL"/>		
	</appSettings>

sqlhelper类
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data
Imports System.Reflection

Public Class sqlhelper
    'configurationManager表示读配置文件;  
    'appsetting获取配置文件的数据;  
    Public Shared ConnectionString As String = ConfigurationManager.AppSettings("sqlConnectStr")
    'sqlDataAdapter表示用于填充Data.Dataset和更新SQL SERVER数据库的一组数组命令和一个数据库连接;  
    Private Shared Property adaptor As SqlDataAdapter

    ''' <summary>  
    ''' 带参数的更新操作  
    ''' </summary>  
    ''' <param name="cmdText">增删改语句或者存储过程</param>  
    ''' <param name="cmdType">命令类型文本或者存储过程</param>  
    ''' <param name="paras">参数数组</param>  
    ''' <returns>受影响行数</returns>  
    ''' <remarks></remarks>  
    Public Shared Function ExecuteNoQuery(ByVal cmdText As String,ByVal cmdType As CommandType,ByVal paras As SqlParameter()) As Integer
        '定义一个连接字符串  
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        Dim res As Integer '定义一个变量用户存放返回结果  
        cmd = New SqlCommand(cmdText,conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            '打开数据连接  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            '执行查询操作  
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
            '关闭数据库连接  
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return res '返回受影响的行数  
    End Function


    ''' <summary>  
    ''' 不带参数的更新操作  
    ''' </summary>  
    ''' <param name="cmdTxt">增删改Sql语句或者存储过程</param>  
    ''' <param name="cmdType">命令类型文本或者存储过程</param>  
    ''' <returns>受影响的行数</returns>  
    ''' <remarks></remarks>  
    Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String,ByVal cmdType As CommandType) As Integer
        '定义一个连接字符串  
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        Dim res As Integer '定义一个变量用户存放返回结果  
        cmd = New SqlCommand(cmdTxt,conn)
        cmd.CommandType = cmdType
        Try
            '打开数据库连接  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            '执行命令  
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
            '关闭数据库连接  
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return res '返回受影响的行数  
    End Function


    ''' <summary>  
    ''' 不带参数的查询操作
    ''' </summary>  
    ''' <param name="cmdtxt">查询sql语句或者存储过程</param>  
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>  
    ''' <returns>结果集</returns>  
    ''' <remarks></remarks>  
    Public Shared Function GetDataTable(ByVal cmdtxt As String,ByVal cmdType As CommandType) As DataTable
        '定义一个连接字符串  
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter '定义一个适配器对象  

        cmd = New SqlCommand(cmdtxt,conn)
        adaptor = New SqlDataAdapter(cmd)
        adataset = New DataSet
        cmd.CommandType = cmdType
        Try
            '打开数据库连接  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
                '填充数据集  
                adaptor.Fill(adataset)
            End If
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
            '关闭数据库连接  
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return adataset.Tables("table") '返回数据集的第一个表  
    End Function


    ''' <summary>  
    ''' 带参数的查询操作
    ''' </summary>  
    ''' <param name="cmdTxt">查询sql语句或者存储过程名称</param>  
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>  
    ''' <param name="paras">参数数组</param>  
    ''' <returns>结果集</returns>  
    ''' <remarks></remarks>  
    Public Shared Function GetDataTable(ByVal cmdTxt As String,ByVal paras As SqlParameter()) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter '定义一个适配器对象  
        cmd = New SqlCommand(cmdTxt,conn)
        adaptor = New SqlDataAdapter(cmd)
        adataset = New DataSet
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            '打开数据库连接  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            '填充数据集  
            adaptor.Fill(adataset)
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
            '关闭数据库连接  
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return adataset.Tables("table")
    End Function


    ''' <summary>  
    ''' 获取一个不带参数的查询结果阅读器  
    ''' </summary>  
    ''' <param name="cmdTxt">查询的SQL语句或者存储过程名称</param>  
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>  
    ''' <returns>查询结果</returns>  
    ''' <remarks></remarks>  
    Public Shared Function GetReader(ByVal cmdTxt As String,ByVal cmdType As CommandType) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        'Dim reader As SqlDataReader  
        cmd = New SqlCommand(cmdTxt,conn)
        cmd.CommandType = cmdType
        Try
            '打开数据库连线    
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            '执行命令    
            'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)  
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
        End Try
        '返回一个阅读器    
        Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
    End Function


    ''' <summary>  
    ''' 获取一个带参数的查询结果阅读器    
    ''' </summary>  
    ''' <param name="cmdTxt">查询的SQL语句或者存储过程名称</param>  
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>  
    ''' <param name="paras">参数数组</param>  
    ''' <returns>查询结果</returns>  
    ''' <remarks></remarks>  
    Public Shared Function GetReader(ByVal cmdTxt As String,ByVal paras As SqlParameter()) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        cmd = New SqlCommand(cmdTxt,conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        'Dim reader As SqlDataReader    
        Try
            '打开数据库连线    
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            '执行命令    
            'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)    
        Catch ex As Exception
            MsgBox(ex.Message,"数据库操作")
        Finally
        End Try
        '返回一个阅读器    
        Return cmd.ExecuteReader()
    End Function
End Class

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读