【VB.NET】sqlhelper

前端之家收集整理的这篇文章主要介绍了【VB.NET】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
原文链接:https://www.f2er.com/vb/256804.html

猜你在找的VB相关文章