机房收费系统数据库小助手——Sqlhelper

【背景】    

   在开始机房收费系统的学习之前,我们学习了软工,设计模式和三层,软工告诉我们编程设计要注重代码的灵活性,可复用性、减少代码复用量,而设计模式和三层的则让我们学习了怎样达到代码的灵活性、可复用性和减少代码复用性的方法。在机房的时候,我们总会相到使用这些方法来为我们的代码解耦。

 【sqlhelper】

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

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration          '添加必要引用
Public Class SqlHelper
    Private Shared ReadOnly strConnection As String = ConfigurationManager.AppSettings("DB")
    '定义全局变量,设置链接
    Shared conn As SqlConnection = New SqlConnection(strConnection)
    '定义全局cmd命令
    Shared cmd As New SqlCommand

    ' 执行非查询操作(增删改)有参数,  
    ' <param name="cmdText">执行增删改查SQL语句或者存储过程</param>      
    ' <param name="cmdType">命令类型文本或者是存储过程</param>      
    ' <param name="paras">参数数组,无法确认有多少参数</param>  
    Public Shared Function ExecuteNoquery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Integer
        Dim result As Integer '定义变量用来存放执行的结果
        cmd.Parameters.AddRange(paras) '将参数传入

        '给cmd赋值
        cmd.CommandText = cmdText '设置查询语句
        cmd.CommandType = cmdType '设置一个值,解释cmdtext
        cmd.Connection = conn '设置链接,全局变量
        Try
            conn.Open() '打开链接
            result = cmd.ExecuteNonQuery() '执行增删改操作
            cmd.Parameters.Clear() '清除参数
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据链接
            Call CloseConn(conn)
            Call closeCmd(cmd)

        End Try
        Return result   '返回数据集的第一个表  
    End Function

    Public Shared Function ExeAddDelUpdateNo(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType

        cmd.Connection = conn
        Dim result As Integer
        Try
            conn.Open()
            result = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try
        Return result
    End Function

    Public Shared Function ExecSlect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim sqlAdater As SqlDataAdapter
        Dim dt As New DataTable
        Dim ds As New DataSet

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = conn
        cmd.Parameters.AddRange(paras)
        sqlAdater = New SqlDataAdapter(cmd)
        Try
            sqlAdater.Fill(ds) '用adapter将dataset填充
            dt = ds.Tables(0) 'datatable为dataset的第一个表
            cmd.Parameters.Clear() '清除参数
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Call CloseCmd(cmd)
        End Try
        Return dt
    End Function
    Public Shared Function ExecSelectNo(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim ds As New DataSet

        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
    Public Shared 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 Shared Sub CloseCmd(ByVal cmd As SqlCommand)

        If Not IsNothing(cmd) Then          '如果cmd命令存在      
            cmd.Dispose()                   '销毁      
            cmd = Nothing
        End If
    End Sub
End Class
【小结】
    可见,在我们敲机房的时候,sqlhelper的运用,让我们减少了很多代码的重复,也使得程序与数据库之间有了一个接口,通过sqlhelper,可以很方便的实现程序对数据库得操作。

你可能感兴趣的:(机房收费系统数据库小助手——Sqlhelper)