机房收费系统中sqlhelper的应用

在接受了三层的思想之后,sqlhelper被传的沸沸扬扬,它给我们的编码带来多少优势、让编码者少花了多少时间、多少精力,等等的赞美之词不绝于耳。自己也是将信将疑的,毕竟自己没有亲身经历,所以没有很大的体会。而如今,自己多次使用了sqlhelper,穿梭在各层之间确实也体会到了它带给我们的简便之处,结合很多人的版本自己编写了属于自己的那一版,以下便是具体代码:

<span style="font-family:KaiTi_GB2312;font-size:18px;">Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration                            '在管理器中添加方可使用

'''<summary>
'''sqlhelper类
'''</summary>
''' <remarks ></remarks >
Public Class SQLHelperDAL
        '获得数据库的连接字串
        Private ReadOnly strconnection As String = "server=zhanghui-pc;database=charge-SYS;user id=sa;password=123456"

        '设置连接
        Dim conn As SqlConnection = New SqlConnection(strconnection)

        '定义cmd命令
        Dim cmd As New SqlCommand

        '''<summary>
        ''' 执行增、删、改三个操作(有参),
        '''</summary>
        ''' <param name="cmdtext">     </param >
        ''' <param name="cmdtype">     </param >
        ''' <param name="paras">       </param >
        ''' <returns></returns>        

    Public Function ExecAddDelUpdate(ByVal cmdtext As String, ByVal cmdtype As CommandType, ByVal paras As SqlParameter()) As Boolean
        '将传入的值分别赋给cmd
        cmd.Parameters.AddRange(paras)
        cmd.CommandType = cmdtype
        cmd.Connection = conn
        cmd.CommandText = cmdtext

        Try

            conn.Open()
            Return cmd.ExecuteNonQuery()
            cmd.Parameters.Clear()
        Catch ex As Exception
            Return 0
        Finally
            Call closecmd(cmd)
            Call closeconn(conn)
        End Try
    End Function

    '''<summary>
    ''' 执行增、删、改三个操作(无参)
    ''' </summary>
    ''' <param name="cmdtext">    </param >
    ''' <param name="cmdtype">    </param >
    ''' <returns>intergers        </returns >
    ''' <remarks >                </remarks >

    Public Function ExecAddDelUpdateNo(ByVal cmdtext As String, ByVal cmdtype As CommandType) As Integer
        '为要执行的cmd命令赋值
        cmd.CommandText = cmdtext
        cmd.CommandType = cmdtype
        cmd.Connection = conn

        '执行操作
        Try
            conn.Open()
            Return cmd.ExecuteNonQuery()
            cmd.Parameters.Clear()
        Catch ex As Exception
            Return 0
        Finally
            Call closecmd(cmd)
            Call closeconn(conn)
        End Try
    End Function

    '''<summary>
    ''' 执行查询操作(有参)
    ''' </summary>
    ''' <param name="cmdtext"> </param>
    ''' <param name="cmdtype"> </param >
    ''' <param name="paras">   </param >
    ''' <returns></returns >
    ''' <remarks></remarks >
    Public Function ExecSelect(ByVal cmdtext As String, ByVal cmdtype As CommandType, 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)
            dt = ds.Tables(0)
            cmd.Parameters.Clear()

        Catch ex As Exception
            MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
        Finally
            Call closecmd(cmd)
        End Try

        Return dt
    End Function

    ''' <summary>
    ''' 执行查询的操作(无参)
    ''' </summary>
    ''' <param name="cmdtext"></param>
    ''' <param name="cmdtype"></param>
    ''' <returns></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)

        Try
            sqlAdapter.Fill(ds)
            Return ds.Tables(0)
        Catch ex As Exception
            Return Nothing

        Finally
            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>
    ''' 关闭cmd命令
    ''' </summary>
    ''' <param name="cmd"></param>
    ''' <remarks></remarks>
    Public Sub closecmd(ByVal cmd As SqlCommand)
        If Not IsNothing(cmd) Then
            cmd.Dispose()
            cmd = Nothing
        End If
    End Sub

End Class
</span>

sqlhelper其实是对D层中连接字符串、创建command命令、执行sql操作等一系列固定动作的封装,它增加了代码的复用性、减轻了代码的书写压力,同时有利于后期的代码维护。sqlhelper更传递给我们一种思想,当有固定的、重复的事情要去做的话,我们可以把它定为一个模式,每次都这么去做,我们需要做的只是去处理那边细微的差别,这样既减轻了我们大脑的压力,同时又保证了事情的成功度,当然这种思想也在后边的泛型集合中得到了很好的体现!

最后还是那句话,这只是鄙人的小小见解,有什么不妥的地方还请大家多多指正!

时间: 2024-10-06 22:22:02

机房收费系统中sqlhelper的应用的相关文章

机房收费系统中遇到的SQL语句问题

个人版机房收费系统正在进行中,遇到了几个有关SQL语句的问题. 1.sum函数的使用: 在结账部分,要求出某个表中某一列的和.在第一次机房系统中,我不知道sum函数的存在,很傻很天真地用循环一个一个往上加.下面以求所有卡中余额的和来说说sum函数怎么使,SQL语句为:select sum(cash)from T_Card.这个格式不是固定的,可以根据需求更改,比如求多列的和:select sum(列名1),sum(列名2)...from [表名] where....查询出来的结果只有一行,如果只

机房收费系统中“事务”的应用

做机房收费系统已经接近尾声了,随着系统业务的完善.对各个过程功能要求的提高,对代码的要求就变的愈加苛刻,很多时候实现一个功能需要对数据库中很多的表进行操作,而这些操作都是在这个功能实现了的前提之下才应该去执行的,所以,如果我们单纯地实现功能,而不去考虑他们之间的因果关系,就会出现在某一个功能中部分操作完成了而其他的操作由于由于终端并没有完成,最终,就会对我们的数据造成破坏,使系统的性能大大降低,严格地说,这样的系统是失败的.不合格的.举例来说,如果你在存钱的时候由于供电影响系统终止,而你已经把钱

【机房收费系统】磕磕绊绊中总结

每一个庞然大物来之前,总是心里不自觉的退缩一下.这一次,把我自己当成了奥特曼. 命名规范文档 最先看的是这个.有了标准后,才能见其名 知其意. 数据库设计 敲完三层登陆小demo,这一次重新着手,从ER图开始设计数据库.又翻了翻自考的书,把机房收费系统中可能抽出来的实体画出来 又开始一个个找联系.转换为逻辑结构.可能根据业务的不同,表和主键会稍微有些变化.比如,是否允许一个学生有多张卡,退卡之后原来的卡号还能否再注册,退卡是是否要删除记录等修改或添加一些辅助标记字段,也涉及到一些其他问题,例如添

【VB.NET 机房收费系统】——对SqlHelper别说“不”

 简介 SqlHelper是一个基于·NETFramework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复 的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便. ----官方正解 一长串的文字,我注意到的是"很方便"这三个字,那是有多方便呢???还不会用呢,也没发现又方便呀,单单就看S

机房收费系统个人重构关于SQLHelper

近期在敲机房,对于SQLHelper也是心里有些怵,由于原来没用过,可是看了一些博客和资料后发现,假设不用这个类,会大大添加代码量,并且,事实上它并不新,它是一个有多个关于数据库增删改查操作的语句函数的类,使用这个类能够方便D层调用,对数据库的操作,我们无非就是增删改查,而函数就是有无參数,有无返回值,SQLHelper是个新词,只是我们却一直在用,仅仅是我们不这么叫,之所以叫SQLHelper,理所当然它是D层操作数据的助手, 在SQLHelper类中实现的方法包含: ExecuteNonQu

机房收费系统——SqlHelper

前面自己将了一大堆ADO.NET的基础知识,现在该认真的实践一下了,下面我介绍一下vb.net版机房收费系统中,SqlHelper的使用,在机房收费中,SqlHelper是自己编写的一个类,里面用到的前面讲的几个对象的简单实例. SqlHelper简介:SqlHelper是一个基于·NETFramework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHe

机房收费系统———如何将MSFlexGrid中的数据导入到Excel中

机房收费系统进行了一段时间了,虽然说大体上跟学生信息管理系统一样,不过也有不一样的地方.比如说报表.如何将MSFlexGrid中德数据导入到Excel中等等.这些东西原来没有接触过,第一次接触难免有些陌生.这些问题困扰了我好长-时间,一看到它头都大了.不过,提高班名言——不将就是发现的源动力.本着这一原则,慢慢的攻克了这些问题. 机房收费系统中好几个地方需要将MSFlexGrid中德数据导入到Excel中,这是在学生信息管理系统中没有的功能.首先,首先需要在vb里面引用我们所需要的对象:Micr

机房收费系统--存储过程

在这次机房收费系统中学习到的东西还真不少.E-R图,视图,存储过程,触发器等等.这些东西都是在之前学习过的,这次运用到实践中,收获倍增. 运用存储过程的好处 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用. 3.过程可以重复使用,

机房收费系统——视图的运用

对于视图在一年前的数据库学习和自考中就学到了,那时只是理论学习,这次在机房收费系统重构中亲自实践,加深了对视图的理解. 定义: 从数据库系统外部来看,视图是用户从一个特定的角度来查看数据库中的数据.从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表,在数据库中并不真实存在.好比在提高班有学术部,安全部,纪律部等等,这些部门就是视图,需要给哪个部门开会就通知哪个部门.这些部门的人都是提高班各个期的(基本表),并且每个人都是独一无二的. 操作: 由于视图只是存储的SQL Selec