機房重構之SqlHelper應用,機房重構sqlhelper

來源:互聯網
上載者:User

機房重構之SqlHelper應用,機房重構sqlhelper

由於機房重構過程中每個功能的實現都會涉及到資料庫的連結訪問,代碼重複率非常高,耗時耗力,還會使系統出現代碼冗餘,是一件非常討人厭的工作。進而把這些重複的代碼抽象成一個類,以直接調用的方式來滿足需求。

SqlHelper是一個基於·NET Framework的資料庫操作組件,組件中包含資料庫操作方法。SqlHelper用於簡化重複的去寫那些資料庫連接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封裝後通常是只需要給方法傳入一些參數如資料庫連接字串、SQL參數等,就可以訪問資料庫了。

這是最近的知識的梳理,初次使用,總結的比較簡單,歡迎斧正。

SqlHelper中有兩種方法,對資料庫的查詢和增刪改,每種方法都有有參和無參兩大類:

以下是在本次機房重構中SqlHelper的代碼:


Imports System.DataImports System.Data.SqlClientImports System.Configuration          '添加必要引用Public Class SqlHelper '定義變數    '獲得資料庫連結字串    Private ReadOnly strConnection As String = ("server=192.168.24.68;Database=機房重構.NET;User=sa;Password=123456;")   '設定連結    Dim conn As SqlConnection = New SqlConnection(strConnection)    '定義Command命令    Dim cmd As New SqlCommand    ' <summary>        ' 執行增刪改三個操作,(有參)傳回值為Boolean類型,確認是否執行成功        ' </summary>        ' <param name="cmdText">需要執行語句,一般是Sql語句,也有預存程序</param>        ' <param name="cmdType">判斷Sql語句的類型,一般都不是預存程序</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 Integer        '將傳入的值,分別為cmd的屬性賦值        cmd.Parameters.AddRange(paras)        '將參數傳入        cmd.CommandType = cmdType             '設定一個值,解釋cmdText        cmd.Connection = conn                 '設定串連,全域變數        cmd.CommandText = cmdText             '設定SQL語句        Try            conn.Open()                       '開啟連結            Return cmd.ExecuteNonQuery()      '執行增刪改操作        Catch ex As Exception            Throw                         '如果出錯就拋出        Finally            cmd.Parameters.Clear()            '清除參數            Call CloseConn(conn)            Call CloseCmd(cmd)        End Try    End Function    ' <summary>        ' 執行增刪改三個操作,(無參)        ' </summary>        ' <param name="cmdText">需要執行語句,一般是Sql語句,也有預存程序</param>        ' <param name="cmdType">判斷Sql語句的類型,一般都不是預存程序</param>        ' <returns>Interger,受影響的行數</returns>        ' <remarks>2013年2月2日8:19:59</remarks>    Public Function ExecAddDelUpdateNo(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer        '為要執行的命令cmd賦值        cmd.CommandText = cmdText               '傳入查詢語句        cmd.CommandType = cmdType               '設定Sql語句如何解釋        cmd.Connection = conn                   '設定串連        '執行操作        Try            conn.Open()            Return cmd.ExecuteNonQuery        Catch ex As Exception            Return 0        Finally            Call CloseConn(conn)            Call CloseCmd(cmd)        End Try    End Function    ' <summary>        ' 執行查詢的操作,(有參),參數不限        ' </summary>        ' <param name="cmdText">需要執行語句,一般是Sql語句,也有預存程序</param>        ' <param name="cmdType">判斷Sql語句的類型,一般都不是預存程序</param>        ' <param name="paras">傳入的參數</param>        ' <returns></returns>        ' <remarks></remarks>     Public Function ExecSeletct(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable        Dim sqlAdpter As SqlDataAdapter            '是 DataSet和 SQL Server之間的橋接器,用於檢索和儲存資料        Dim dt As New DataTable        Dim ds As New DataSet        '還是給cmd賦值        cmd.CommandText = cmdText                  '設定查詢語句        cmd.CommandType = cmdType                  '設定Cmd對象的類型        cmd.Connection = conn                      '資料庫連接語句        cmd.Parameters.AddRange(paras)             '傳入參數        sqlAdpter = New SqlDataAdapter(cmd)        '執行個體化適配器        Try            sqlAdpter.Fill(ds)                     '用adapter將dataSet填充            dt = ds.Tables(0)                      'dataTable是dataSet的第一個表            cmd.Parameters.Clear()                 '清除參數        Catch ex As Exception            MsgBox("查詢失敗", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告!")        Finally            Call CloseCmd(cmd)                     '最後一定要釋放cmd        End Try        Return dt      '返回查到的資料    End Function    ' <summary>        ' 執行查詢的操作,(無參)        ' </summary>        ' <param name="cmdText">需要執行語句,一般是Sql語句,也有預存程序</param>        ' <param name="cmdType">判斷Sql語句的類型,一般都不是預存程序</param>        ' <returns>dataTable,查詢到的表格</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)                      '用adapter將dataSet填充            Return ds.Tables(0)                      '返回dataSet的第一個表        Catch ex As Exception            Return Nothing        Finally            Call CloseCmd(cmd)                       '關閉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>        ' 關閉命令        ' </summary>        ' <param name="cmd">需要關閉的命令</param>        ' <remarks></remarks>        Public Sub CloseCmd(ByVal cmd As SqlCommand)        If Not IsNothing(cmd) Then                      '如果cmd命令還存在            cmd.Dispose()                               '釋放資源            cmd = Nothing                               '不指向原對象        End If    End SubEnd Class

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.