面向对象的应用实践—SQLHelper类的分析总结

    在机房收费系统中,D层链接数据库的代码是非常常用的,刚开始的时候按照以前敲代码的惯性,用链接字符串的方式,在每一个功能实现的时候都把链接数据库的代码写了一遍,这样在机房功能实现的时候我终于写代码写恶心自己了。那么就必须要把自己从这种毫无意义的重复性工作中解脱出来了,学过面向对象的抽象以后还没怎么使用过,所以这次的SQLHepler类的编写也是对自己的一种检验。用下面的小图来总结:


    首先要明白SQLHelper类在整个系统中的作用是干什么的。上面说了要把程序员从书写重复性的链接字符串过程操作数据库的泥潭中拯救出来,那么也就明确了SQLHelper类的作用就是代替每一个功能中链接数据库的过程的代码的,把那些代码给抽象出来封装,然后给其他的功能复用,达到代码简化的目的。

      然后就要理清机房收费系统操作数据库的不同操作了。对数据库的操作以前也学习过,增删改查四字暨语是最主要的,其次就是它们的各种混合多重使用,在这写操作中注意到,查这个操作有的时候是需要把数据返回给调用者的,而增删改操作只需要执行下去,有的时候需要有布尔值的返回。那么就可以此分类增删改查操作,方便SQLHelper类中的函数调用。

     接着就要考虑如何来编写函数了,函数也是分不同情况的,有的有参数有的没参数,那么对应到要实现的对数据库的操作的时候也要考虑到,这样下来我们封装的一些函数就可以被大部分的功能调用而不会出错。

    下面是SQLHelper类里面的代码:

'/**********************************
'类名称:SQLHelper
'命名空间:DAL
'创建时间:2015/5/10 9:42:32
'作者:王泽
'小组:
'修改时间:
'修改人:
'版本号:v1.0.0
'***********************************/
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration

''' <summary>
''' SQLHelper类提供广大用户用于高性能练习sql数据库。
''' </summary>
''' <remarks></remarks>
Public Class SQLHelper

    '设置全局公用变量 strConnection 连接数据库
    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("strConnection")

    Dim connection As SqlConnection = New SqlConnection(strConnection)   '定义新的连接方法连接数据库
    Dim command As New SqlCommand    '定义新的数据库命令

    ''' <summary>
    ''' 执行增删改操作,(有参)返回值为boolean类型,确认执行是否成功
    ''' </summary>
    ''' <param name="cmdText"></param>
    ''' <param name="cmdType"></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 Boolean

        '将传入的值分别设置为command的属性值
        command.Parameters.AddRange(paras)   '将参数传入
        command.CommandText = cmdText   '设置执行命令句
        command.CommandType = cmdType    '设置命令语句类型
        command.Connection = connection   '设置命令语句的连接全局变量
        Try
            connection.Open()   '打开连接
            command.ExecuteNonQuery()   '执行命令语句
            command.Parameters.Clear()   '清除参数值
            Return True
        Catch ex As Exception
            Return False
        Finally
            Call CloseCommand(command)   '关闭command命令类
            Call CloseConnection(connection)   '关闭connection连接类
        End Try
    End Function
    ''' <summary>
    ''' 设置增删改方法,(无参)并返回执行结果
    ''' </summary>
    ''' <param name="cmdText"></param>
    ''' <param name="cmdType"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ExecAddDelUpdateNo(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean
        '将传入的值设置为command的属性值
        command.CommandText = cmdText   '设置命令语句
        command.CommandType = cmdType   '设置命令类型
        command.Connection = connection   '设置连接数据库

        Try
            connection.Open()  '打开连接
            command.ExecuteNonQuery()   '执行命令语句
            Return True
        Catch ex As Exception
            Return False
        Finally
            Call CloseCommand(command)
            Call CloseConnection(connection)
        End Try
    End Function

    ''' <summary>
    ''' 执行查询的操作,(有参)返回一个datatable类型的表
    ''' </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 dt As New DataTable
        Dim ds As New DataSet
        Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(command)

        '设置传入的数据为command的属性值
        command.Parameters.AddRange(paras)   '将传入的参数传入command的属性
        command.CommandType = cmdType   '设置传入的cmdtype为执行语句的命令类型
        command.CommandText = cmdText   '设置传入的cmdtext为执行语句的命令
        command.Connection = connection   '设置连接

        Try
            connection.Open()
            sqlAdapter.Fill(ds)
            dt = ds.Tables(0)
            command.Parameters.Clear()
            Return dt
        Catch ex As Exception
            Return Nothing
        Finally
            Call CloseCommand(command)
            Call CloseConnection(connection)
        End Try
    End Function

    ''' <summary>
    ''' 执行查询的操作,(无参)返回一个datatable类型的表
    ''' </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 dt As New DataTable
        Dim ds As New DataSet
        Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(command)

        '设置传入的数据为command的属性值
        command.CommandType = cmdType   '设置传入的cmdtype为执行语句的命令类型
        command.CommandText = cmdText   '设置传入的cmdtext为执行语句的命令
        command.Connection = connection   '设置连接

        Try
            connection.Open()
            sqlAdapter.Fill(ds)
            dt = ds.Tables(0)
            Return dt
        Catch ex As Exception
            Return Nothing
        Finally
            Call CloseCommand(command)
            Call CloseConnection(connection)
        End Try
    End Function

    ''' <summary>
    ''' 关闭connection的连接
    ''' </summary>
    ''' <param name="connection"></param>
    ''' <remarks></remarks>
    Public Sub CloseConnection(ByVal connection As SqlConnection)
        If (connection.State <> ConnectionState.Closed) Then
            connection.Close()    '关闭连接
            connection = Nothing   '不指向原对象
        End If
    End Sub
    ''' <summary>
    ''' 关闭command的命令
    ''' </summary>
    ''' <param name="command"></param>
    ''' <remarks></remarks>
    Public Sub CloseCommand(ByVal command As SqlCommand)
        If Not IsNothing(command) Then
            command.Dispose()   '销毁command命令
            command = Nothing
        End If
    End Sub

End Class

    俗话说鸡蛋不能放在一个篮子里面,通过上面的代码可以看出,在SQLHelper类里面,链接数据库的字符串也不是直接就写在了类里面,而是通过配置文件,把链接字符串在配置文件里写了,这样做的好处就是面相对象的另一个特点:多态。当我们需要更换数据库的时候,不需要在打开系统的SQLHelper类修改了,直接在配置文件里面修改链接字符串就可以省时省力的更换SQLHelper类访问的数据库。

    面向对象到现在为止也是只认识到了皮毛,在系统中用了一点就感觉对机房收费系统非常的有帮助,那么那些在面向对象上侵淫技术十几年的老技术员,他们的眼中恐怕面向对象不光是在代码中体现了,生活处处是对象。心怀敬畏!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
SQLHelper类是一个用于在Windows窗体应用程序中管理图书管理系统数据库的帮助类。该类主要用于执行数据库操作,包括连接数据库、执行SQL语句、返回结果集等功能。以下是该类的一些关键功能和特点: 1. 连接数据库:SQLHelper类提供了连接数据库的方法,可以通过指定数据库服务器名称、数据库名称、用户名和密码,建立与数据库的连接。 2. 执行SQL语句:SQLHelper类可以执行各种SQL语句,包括查询、插入、更新、删除等操作。通过传入SQL语句和参数,可以快速执行数据库操作。 3. 返回结果集:SQLHelper类可以返回执行查询操作后的结果集,以便进一步处理数据。可以通过遍历结果集,获取每一行数据的各个字段的值。 4. 参数化查询:SQLHelper类支持参数化查询,可以预编译SQL语句,通过参数传递数据,提高程序的安全性和性能。 5. 异常处理:SQLHelper类可以捕获数据库操作中可能出现的异常,如连接超时、SQL语句错误等,并提供异常处理机制,确保程序的稳定性。 6. 可扩展性:SQLHelper类具有良好的可扩展性,可以根据具体项目需求进行修改和扩展,以适应不同的数据库操作。 使用SQLHelper类可以方便地在图书管理系统中进行数据库操作,包括添加图书、删除图书、借阅图书、归还图书等功能。通过封装数据库操作,可以减少代码的重复性,提高开发效率。同时,SQLHelper类还可以处理数据库操作中的异常情况,保证数据的安全性和系统的稳定性。它是图书管理系统开发过程中的重要工具,可以有效地管理和操作数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值