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

机房重构--VB.NET的SQLHelper层讲解

发布时间:2020-12-16 23:55:27 所属栏目:大数据 来源:网络整理
导读:因为需要调取数据库中的信息,所以需要书写与数据库连接的代码,如果不引用SQLHelper的话,这方面的工作量随着功能的增大而增多,从而使得出错和工作量大量的增加。这就是SQLHelper引用带来的好处。 SQLHelper跟SqlConnection、SqlCommand、SqlDataReader之

因为需要调取数据库中的信息,所以需要书写与数据库连接的代码,如果不引用SQLHelper的话,这方面的工作量随着功能的增大而增多,从而使得出错和工作量大量的增加。这就是SQLHelper引用带来的好处。

SQLHelper跟SqlConnection、SqlCommand、SqlDataReader之间的连接非常密切,将SQLHelper封装过后通常是只需要给方法传入一些参数,比如数据库的连接字符串、SQL参数等,这样就能很方便的连接数据库了,现在这里给大家介绍一下VB.NET中SQLHelper的书写:、

首先,为了简化代码的引用,我们一般会在配置文件里面设定好数据库的连接地址、数据库、帐号和密码等一些信息,所以SQLHelper在连接数据库的时候就需要跟配置文件相联系起来,这里先给大家介绍一下如何在配置文件中设定数据库连接的信息。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
 
  <appSettings>
    <add key ="strConnection" value="Server=.;Database=Charge_sys;User ID=sa;Password=123"/>
    <add key ="DB" value="DAL"/>
  </appSettings>
</configuration>

然后就是书写SQLHelper类中的内容了,详情请见下文代码:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration  '必须要在管理器中添加引用  
''' <summary>
''' SqlHelper类是专门提供给广大用户用于高性能、可升级和最佳练习的sql数据操作
''' </summary>
''' <remarks></remarks>
Public Class SqlHelper
    '定义变量  
    '获得数据库的连接字符串  
    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("ConnStr")
    '设置连接  
    Dim conn As SqlConnection = New SqlConnection(strConnection)
    '定义cmd命令  
    Dim cmd As New SqlCommand

    ''' <summary>  
    ''' 执行增删改三个操作,(有参)返回值为Boolean类型,确认是否执行成功  
    ''' </summary>  
    ''' <param name="cmdText">需要执行语句,一般是Sql语句,也有存储过程</param>  
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>  
    ''' <param name="paras">参数数组,无法确认有多少参数</param>  
    ''' <returns></returns>  
    ''' <remarks></remarks>  
    Public Function ExecAddDelUpdate(ByVal cmdText As String,ByVal cmdType As CommandType,ByVal paras As SqlParameter()) As Integer
        '将传入的值,分别为cmd的属性赋值  
        cmd.Parameters.AddRange(paras)   '将参数传入  
        cmd.CommandType = cmdType            '设置一个值,解释cmdText  
        cmd.Connection = conn                '设置连接,全局变量  
        cmd.CommandText = cmdText            '设置查询的语句  

        Try
            conn.Open()                      '打开连接  
            Return cmd.ExecuteNonQuery()     '执行增删改操作  
            cmd.Parameters.Clear()           '清除参数  
        Catch ex As Exception
            Return 0                         '如果出错,返回0  
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try
    End Function
    ''' <summary>  
    ''' 执行增删改三个操作,(无参)  
    ''' </summary>  
    ''' <param name="cmdText">需要执行语句,一般都不是存储过程</param>  
    ''' <returns>Interger,受影响的行数</returns>  
    ''' <remarks>2013年2月2日8:19:59</remarks>  
    Public Function ExecAddDelUpdateNo(ByVal cmdText As String,ByVal cmdType As CommandType) As Integer
        '为要执行的命令cmd赋值  
        cmd.CommandText = cmdText       '先是查询的sql语句  
        cmd.CommandType = cmdType       '设置Sql语句如何解释  
        cmd.Connection = conn           '设置连接  

        '执行操作  
        Try
            conn.Open()
            Return cmd.ExecuteNonQuery()
        Catch ex As Exception
            Return 0
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try
    End Function

    ''' <summary>  
    ''' 执行查询的操作,(有参),参数不限  
    ''' </summary>  
    ''' <param name="cmdText">需要执行语句,一般都不是存储过程</param>  
    ''' <param name="paras">传入的参数</param>  
    ''' <returns></returns>  
    ''' <remarks></remarks>  
    Public Function ExecSelect(ByVal cmdText As String,ByVal paras As SqlParameter()) As DataTable

        Dim sqlAdapter As SqlDataAdapter
        Dim dt As New DataTable
        Dim ds As New DataSet
        '还是给cmd赋值  
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn
        cmd.Parameters.AddRange(paras)  '参数添加  
        sqlAdapter = New SqlDataAdapter(cmd)  '实例化adapter  
        Try
            sqlAdapter.Fill(ds)           '用adapter将dataSet填充   
            dt = ds.Tables(0)             'datatable为dataSet的第一个表  
            cmd.Parameters.Clear()        '清除参数  
        Catch ex As Exception
            MsgBox("查询失败",CType(vbOKOnly + MsgBoxStyle.Exclamation,MsgBoxStyle),"警告")
        Finally                            '最后一定要销毁cmd  
            Call CloseCmd(cmd)
        End Try
        Return dt
    End Function


    ''' <summary>  
    ''' 执行查询的操作,一般都不是存储过程</param>  
    ''' <returns>dataTable,查询到的表格</returns>  
    ''' <remarks></remarks>  
    Public Function ExecSelectNo(ByVal cmdText As String,ByVal cmdType As CommandType) As DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim ds As New DataSet
        '还是给cmd赋值  
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn
        sqlAdapter = New SqlDataAdapter(cmd)  '实例化adapter  
        Try
            sqlAdapter.Fill(ds)           '用adapter将dataSet填充   
            Return ds.Tables(0)             'datatable为dataSet的第一个表  
        Catch ex As Exception
            Return Nothing
        Finally                            '最后一定要销毁cmd  
            Call CloseCmd(cmd)
        End Try
    End Function

    ''' <summary>  
    ''' 关闭连接  
    ''' </summary>  
    ''' <param name="conn">需要关闭的连接</param>  
    ''' <remarks></remarks>  
    Public Sub CloseConn(ByVal conn As SqlConnection)
        If (conn.State <> ConnectionState.Closed) Then  '如果没有关闭  
            conn.Close()                    '关闭连接  
            conn = Nothing                  '不指向原对象  
        End If

    End Sub
    ''' <summary>  
    ''' 关闭命令  
    ''' </summary>  
    ''' <param name="cmd">需要关闭的命令</param>  
    ''' <remarks></remarks>  
    Public Sub CloseCmd(ByVal cmd As SqlCommand)

        If Not IsNothing(cmd) Then          '如果cmd命令存在  
            cmd.Dispose()                   '销毁  
            cmd = Nothing
        End If
    End Sub
End Class

(编辑:李大同)

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

    推荐文章
      热点阅读