VB.NET版机房收费系统---SqlHelper

简介:         SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手。

        SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手。百度百科这样对她进行阐述:

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

        可是,好好的,我们为什么要用SqlHlper?我想百度百科上的解释已经很清楚很明白了,SqlHlper是在D层中的代码抽象出来的,那D层中什么样的代码才能抽象出来?原来啊,就是把那些对数据库进行增删改查的操作,存储过程及程序集等中相同的代码抽象出来!

      在 SqlHelper 类中实现的方法包括:
      ExecuteNonQuery。此方法用于执行(有参数或无参数的)不返回任何行或值的命令。这些命令通常用于执行数据库(增\删\改)更新,但也可用于返回存储过程的输出参数。
      ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。
      ExecuteDataset。此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。   

      下面是SqlHelper的具体实现:

       

Imports System.Data.SqlClient
Imports System.Configuration
Public Class SqlHelper
    '定义连接字符串
    Dim strConnection As String = System.Configuration.ConfigurationSettings.AppSettings("strConnection")
    '定义连接
    Dim conn As SqlConnection
    '定义命令
    Dim cmd As SqlCommand
    '初始化连接对象
    Public Sub New()
        conn = New SqlConnection(strConnection)
    End Sub
    '/// <summary>
    '/// depiction:<有参数的非查询的操作>
    '/// </summary>
    '/// <param name="<strText>"><增删改语句或者存储过程></param>
    '/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
    '/// <param name="<sqlParameter>"><参数数组></param>
    '/// <returns>
    '/// <返回布尔值>
    '/// </returns>

    Public Function ExecuteNonQuery(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Boolean
        Dim cmd As New SqlCommand   '定义命令
        cmd.CommandText = strText 'sql语句或存储过程名字
        cmd.CommandType = cmdType '命令类型是StoredProcedure时,调用存储过程,一般为CommandText
        cmd.Connection = conn '连接数据库

        cmd.Parameters.AddRange(sqlParameter) '传参
        Dim flag As Boolean = False  '定义返回值

        Try
            conn.Open()  '打开数据库连接
            flag = cmd.ExecuteNonQuery
            cmd.Parameters.Clear()
        Catch ex As Exception
            flag = False
        Finally
            Call CloseConnection(conn)  '关闭数据库连接
            Call CloseCmd(cmd)
        End Try
        Return flag
    End Function

    '/// <summary>
    '/// depiction:<获取一个带参数的查询结果阅读器>
    '/// </summary>
    '/// <param name="<strText>"><增删改语句或者存储过程></param>
    '/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
    '/// <param name="<sqlParameter>"><参数数组></param>
    '/// <returns>
    '/// <返回布尔值>
    '/// </returns>
    Public Function ExecuteReader(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Boolean
        Dim cmd As New SqlCommand
        Dim reader As SqlDataReader
        cmd.CommandText = strText 'sql语句或存储过程名字
        cmd.CommandType = cmdType  '命令类型是StoredProcdeure时,调用存储过程,一般为CommandText
        cmd.Connection = conn

        cmd.Parameters.AddRange(sqlParameter) '传参
        Dim flag As Boolean = False  '定义返回值

        Try
            conn.Open()
            reader = cmd.ExecuteReader
            flag = reader.Read()
            cmd.Parameters.Clear()
        Catch ex As Exception
            flag = False
        Finally
            Call CloseConnection(conn)
            Call CloseCmd(cmd)
        End Try
        Return flag
    End Function

    '/// <summary>
    '/// depiction:<获取一个带参数的查询DataTable结果集>
    '/// </summary>
    '/// <param name="<strText>"><增删改语句或者存储过程></param>
    '/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
    '/// <param name="<sqlParameter>"><参数数组></param>
    '/// <returns>
    '/// <返回DataTable>
    '/// </returns>
    Public Function ExecuteReaderTable(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As DataTable
        Dim cmd As New SqlCommand  '定义命令
        Dim dataAdapter As New SqlDataAdapter '定义一个适配器对象
        Dim dst As New DataSet
        Dim dt As New DataTable

        cmd.CommandText = strText  'sql语句或存储过程名字
        cmd.CommandType = cmdType  '命令类型是StoredProcdeure时,调用存储过程,一般为CommandText
        cmd.Connection = conn      '连接数据库

        cmd.Parameters.AddRange(sqlParameter) '传参
        Try
            conn.Open()
            dataAdapter.SelectCommand = cmd
            dataAdapter.Fill(dst)
            dt = dst.Tables(0)
        Catch ex As Exception
            Call CloseConnection(conn)
            Call CloseCmd(cmd)
        End Try
        Return dt
    End Function
    '/// <summary>
    '/// depiction:<获取上机人数>
    '/// </summary>
    '/// <param name="<strText>"><增删改语句或者存储过程></param>
    '/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
    '/// <param name="<sqlParameter>"><参数数组></param>
    '/// <returns>
    '/// <返回整型>
    '/// </returns>
    Public Function ExecuteScalar(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Integer
        Dim cmd As New SqlCommand
        Dim count As Integer

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn

        cmd.Parameters.AddRange(sqlParameter)
        Try
            conn.Open()
            count = cmd.ExecuteScalar
        Catch ex As Exception
            Throw New Exception(ex.Message.ToString())
        Finally
            Call CloseCounection(conn)
            Call CloseCmd(cmd)
        End Try
        Return count
    End Function
    '/// <summary>
    '/// depiction:<算取金额>
    '/// </summary>
    '/// <param name="<strText>"><增删改语句或者存储过程></param>
    '/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
    '/// <param name="<sqlParameter>"><参数数组></param>
    '/// <returns>
    '/// <返回integer>
    '/// </returns>
    Public Function ExecuteScalarCash(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Decimal
        Dim cmd As New SqlCommand
        Dim cash As Decimal

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn
        cmd.Parameters.AddRange(sqlParameter)

        Dim i As String
        Try
            conn.Open()
            i = cmd.ExecuteScalar.ToString()

            If i = "" Then
                cash = 0.0
            Else
                cash = i
            End If

        Catch ex As Exception
            Throw New Exception(ex.Message.ToString())
        Finally
            Call CloseConnection(conn)
            Call CloseCmd(cmd)

        End Try
        Return cash
    End Function



    Public Sub CloseConnection(ByVal conn As SqlConnection)
        If Not IsNothing(conn.State <> ConnectionState.Closed) Then
            conn.Close() '关闭连接
            conn = Nothing
        End If
    End Sub

    Private Sub CloseCmd(cmd As SqlCommand)
        If Not IsNothing(cmd) Then '判断是否为空
            cmd.Dispose()
            cmd = Nothing
        End If
    End Sub

End Class
           SqlHelper 封装成一个类,为开发人员选择访问数据库的方式提供了灵活性,每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。像是打包,封装的思想完美诠释,抽离出相同的内容,使代码得到复用!
目录
相关文章
|
12月前
|
SQL 存储 缓存
机房重构系列——ADO.NET访问数据库
机房重构系列——ADO.NET访问数据库
83 0
|
SQL 数据库连接 数据库
【vb.net机房收费系统】之sqlhelper
【vb.net机房收费系统】之sqlhelper
35 0
【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集
【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集
32 0
|
BI 数据库连接 数据库
机房收费系统(VB.NET)——超详细的报表制作过程
之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。刚开始当然对这块功能很不熟悉,不过探究了一段时间后还是把它做出来了。 下面把在VisualStudio(我用的是VisualStudio2013,如果与您使用的版本不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能详细地记录下来,供初学者学习参考。
机房收费系统(VB.NET)——超详细的报表制作过程
|
存储 SQL 数据库连接
机房收费系统(VB.NET)——存储过程实战
最初接触存储过程是在耿建玲老师的视频里,当初只是草草过了一遍,只是有了个印象,知道了这个名词;大二时也有SqlServer数据库这门课,不过老师没讲,自己也没看;真正对存储过程的了解来自于自学考试中的《数据库系统原理》,在考试中,知道存储过程是干嘛的,在纸上怎么写,但从来没有在DBMS中亲手敲过。于是机房收费系统给了我这个机会。 在这里不再过多叙述关于存储过程德基本知识,只写一下在机房收费系统这个小项目中是如何用到存储过程的。
机房收费系统(VB.NET)——存储过程实战
|
设计模式 存储
机房收费系统(VB.NET)个人版总结
<p><span style="font-size:18px">    <span style="font-family:KaiTi_GB2312">重构版个人机房收费系统大概从暑假开学开始进行,花了不到一个半月的时间才完成,下面对我在重构过程中的一写理解。</span></span></p> <p><span style="font-size:18px">     </span></p
1241 0
|
设计模式 C#
VB.NET版机房收费系统---外观层如何写
       外观设计模式,《大话设计模式》第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来,才是王道,有人总说,纸上得来终觉浅,绝知此事要躬行,可是真到了躬行的时候,总是行不通,语言倒不过来,设计模式是C#语言的,机房收费是VB.
1008 0
|
数据库 设计模式 存储
小结:VB.NET机房收费系统个人版
      经过几天的缝缝补补,自己的个人版终于OK了,!也许是因为有第一次的机房收费系统的经验,这次做,感觉非常亲切。      在业务逻辑方面,沿袭以前的逻辑,做了一点升级,但是改动不大。
973 0
|
SQL BI 数据库
VB.NET版机房收费系统---报表
       报表,即报告情况的表格,简单的说:报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。
1112 0
|
SQL 数据库连接
VB.NET版机房收费系统---组合查询
       查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我?                          ...
914 0