机房重构--sqlhelper

        在机房重构过程中,每个功能的实现都会涉及到数据库的访问,代码重复率非常高,于是,把这些重复的代码抽象成一个类,有需求直接调用就可以了。这时候,SqlHelper就登场了。
      SqlHelper是一个基于·NET Framework的数据库操作组件。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了。
    机房收费中关于数据库的操作总结出来就这这四种情况:
     1.不带参数的增删改操作,返回结果为值
     2.带参数的增删改操作,返回结果为值
     3.不带参数的查询操作,以表为返回结果
     4.带参数的查询操作,以表为返回结果 
     SqlHelper可以将这些方法进行封装,然后使用的时候只需调用。有参数的传参。

Public Class Sqlhelper
    '利用配置文件寻找“连接字符串”,建立cmd文件
    Dim constr As String = System.Configuration.ConfigurationSettings.AppSettings("conStr")
    Dim conn As New SqlConnection(constr)
    Dim cmd As New SqlCommand
    '带参数,返回结果是表
    Public Function GetDataTable(ByVal str As String, ByVal cmdtype As CommandType, ByVal sqlparams As SqlParameter()) As DataTable
        cmd = conn.CreateCommand()

        '利用传进的参数填充cmd对象
        cmd.CommandText = str
        cmd.CommandType = cmdtype
        cmd.Parameters.AddRange(sqlparams)

        Dim dtSQL As New DataTable '定义数据表格
        Dim sqlAdapter As New SqlDataAdapter(cmd) '定义数据适配器变量,并实例化,将cmd绑定在adaptor上面
        Dim dsSQL As New DataSet  '定义数据缓存变量

        Try
            conn.Open()
            sqlAdapter.Fill(dsSQL)      '用adapter将dataset填充        
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call closeconn(conn)
        End Try
        Return dsSQL.Tables(0)
    End Function
    '不带参数返回结果是表
    Public Function GetDataTable(ByVal str As String, ByVal cmdtype As CommandType) As DataTable
        cmd = conn.CreateCommand()

        '利用传进的参数填充cmd对象
        cmd.CommandText = str
        cmd.CommandType = cmdtype


        Dim dtSQL As New DataTable '定义数据表格
        Dim sqlAdapter As New SqlDataAdapter(cmd) '定义数据适配器变量,并实例化,将cmd绑定在adaptor上面
        Dim dsSQL As New DataSet  '定义数据缓存变量

        Try
            conn.Open()
            sqlAdapter.Fill(dsSQL)      '用adapter将dataset填充        
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call closeconn(conn)
        End Try
        Return dsSQL.Tables(0)

    End Function
    ' 带参数,返回结果是值
    Public Function ExecuteNonQuery(ByVal str As String, ByVal cmdtype As CommandType, ByVal sqlparams As SqlParameter()) As Integer
        cmd = conn.CreateCommand()


        '利用传进的参数填充cmd对象
        cmd.CommandText = str
        cmd.CommandType = cmdtype
        cmd.Parameters.AddRange(sqlparams)
        Dim int As Integer

        Try
            conn.Open()
            int = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call closeconn(conn)
        End Try
        Return int

    End Function
    '带参数,返回结果是值
    Public Function ExecuteNonQuery(ByVal str As String, ByVal cmdtype As CommandType) As Integer
        cmd = conn.CreateCommand()


        '利用传进的参数填充cmd对象
        cmd.CommandText = str
        cmd.CommandType = cmdtype

        Dim int As Integer

        Try
            conn.Open()
            int = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call closeconn(conn)
        End Try
        Return int
    End Function
    '关闭数据库连接
    Public Shared Sub closeconn(ByVal conn As SqlConnection)
        If conn.State = ConnectionState.Open Then
            conn.Close()
        End If
    End Sub
End Class


总结:在vb中这不就是模块吗。sqlhelper体现了面向对象的抽象,封装,减少代码重复。后面的存储过程也是将相同的代码进行封装,减少重复,而且设计模式也是相同道理,总之,这都是为了,容易维护,减少重复,给代码减肥。

你可能感兴趣的:(重构)