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

机房收费系统技术盘点--SqlHelper

发布时间:2020-12-17 08:19:54 所属栏目:百科 来源:网络整理
导读:首先,什么是SqlHelper? sqlHelper是一个基于.NET Framework的数据库操作组件。 SqlHelper的用处或者或是好处是:用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,sqlDataReader等等。SqlHelper 封装过后通常是只需要给 方法 传入 一些

首先,什么是SqlHelper?sqlHelper是一个基于.NET Framework的数据库操作组件。

SqlHelper的用处或者或是好处是:用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,sqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

百度百科上对SqlHelper的使用方法介绍的很清楚,但是那些代码应该是C#编写的,与VB.NET还是有些不同。上网找过VB.NET版的SqlHelper类的代码,SqlHelper类VB.NET版,之前看的时候,有些看不懂,注释实在是太少,而且这两个里面都有用到事务,但是我对事务不是很了解。所以最后,参看了其他人的代码,整理了SqlHelper中4个方法。

这4个方法是自定义的。分别为ExecAddDelUpdate和ExecSelect,这两个都有有参和无参版。有参表示,有传入值,无参表示无传入值,比如查询一个表中的所有数据,就不需要任何条件,无参就好了。

而网上的SqlHelper方法一般都是ExecuteNonquery,ExecuteReader,前面是针对增删改,后面那个针对查询。还有ExecuteDataTable,可以返回DataTable类型的结果,就可以和DataGridView控件绑定数据。

Imports System.Data.SqlClient
Imports System.Configuration  '必须要在管理器中添加引用

Public Class SqlHelper
    '定义变量
    '获得数据库的连接字符串
    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("strConnection")
    '设置连接
    Dim conn As SqlConnection = New SqlConnection(strConnection)
    '定义cmd命令
    Dim cmd As New SqlCommand

    ''' <summary>
    ''' 执行增删改三个操作,(有参)返回值为Integer类型,确认是否执行成功
    ''' </summary>
    ''' <param name="cmdText">需要执行语句,一般是Sql语句,也有存储过程</param>
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>
    ''' <param name="sqlParams">参数数组,无法确认有多少参数</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ExecAddDelUpdate(ByVal cmdText As String,ByVal cmdType As CommandType,ByVal sqlParams As SqlParameter()) As Integer
        '将传入的值,分别为cmd的属性赋值
        cmd.Parameters.AddRange(sqlParams)   '将参数传入
        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 ExecAddDelUpdate(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="sqlParams">传入的参数</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ExecSelect(ByVal cmdText As String,ByVal sqlParams 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(sqlParams)  '参数添加
        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 ExecSelect(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

然后D层的代码就这样写。这是查询销卡记录,并且需要返回DataTable类型的值。

 Public Function SelectCancelCard(ByVal startDate As String,ByVal endDate As String) As DataTable
        'Sql查询语句
        strSql = "Select cardNo as 卡号,refund as 退还金额,cancelDate as 退还日期,cancelTime as 退还时间,isCheckout as 结账状态,teacher as 结账教师 from T_CancelCard where cancelDate between @startDate and @endDate"

        '设置参数
        Dim sqlParams As SqlParameter() = {
            New SqlParameter("@startDate",startDate),New SqlParameter("@endDate",endDate)
            }
        '执行
        Return sqlHelper.ExecSelect(strSql,CommandType.Text,sqlParams)
    End Function

(编辑:李大同)

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

    推荐文章
      热点阅读