個人機房重構之SqlHelper

來源:互聯網
上載者:User

標籤:.net

           在接觸SqlHelper之前已經是久聞大名了。機房的重構師傅說先用三層的思想來做,等體會深了在加設計模式和其他的。前天搬著電腦讓師傅看了看,指導了指導,然後說可以加一些東西了。我說加這個加那個?師傅說想加什麼想用什麼回去自己再學學具體的會體會深刻。

    其實在寫純三層的時候已經感受到了D層中代碼的大量重複。串連資料庫查詢資料庫寫SQL語句總是用到那麼幾句話。

    機房收費中關於資料庫的操作無非這四種情況:

     1.不帶參數的增刪改操作,返回結果為值

     2.帶參數的增刪改操作,返回結果為值

     3.不帶參數的查詢操作,以表為返回結果

     4.帶參數的查詢操作,以表為返回結果 

     SqlHelper可以將這些方法進行封裝,然後使用的時候只需調用。有參數的傳參。

              

Imports System.DataImports System.Data.SqlClientImports System.ConfigurationPublic Class SqlHelper    Private Shared ConnectionString As String = ConfigurationManager.AppSettings("strConn")    ''' <summary>    ''' 執行不帶參數的增刪改操作    ''' </summary>    ''' <param name="cmdTxt">參數cmdTxt為所要執行的sql語句</param>    ''' <param name="cmdType">SqlCommand的執行類型</param>    ''' <returns>整形傳回值res,執行成功則res!=0,不成功則res=0</returns>    ''' <remarks></remarks>    Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType) As Integer        Dim conn As SqlConnection = New SqlConnection(ConnectionString) '定義串連變數conn,串連資料庫        Dim cmd As SqlCommand '定義執行命令變數        Dim res As Integer '定義傳回值變數res        cmd = New SqlCommand(cmdTxt, conn)  '執行個體化conn上的SqlCommand命令,執行語句為cmdTxt        cmd.CommandType = cmdType '命令執行的類型        Try            '如果資料庫連接狀態為關閉則將其開啟            If conn.State = ConnectionState.Closed Then                conn.Open()            End If            '執行cmdTxt語句,並將執行結果返回給res(執行成功返回的記錄總數)            res = cmd.ExecuteNonQuery()        Catch ex As Exception            '錯誤處理程式,出錯則提示            MsgBox(ex.Message, , "資料庫操作")        Finally            '如果串連狀態為開啟則將其關閉,釋放記憶體            If conn.State = ConnectionState.Open Then                conn.Close()            End If        End Try        Return res 'res作為結果返回    End Function    ''' <summary>    ''' 執行帶參數的增刪改操作    ''' </summary>    ''' <param name="cmdTxt">參數cmdTxt為所要執行的sql語句</param>    ''' <param name="cmdType">SqlCommand的執行類型</param>    ''' <param name="paras">sql語句中引用的參數</param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Integer        Dim conn As SqlConnection = New SqlConnection(ConnectionString)  '定義串連變數conn,串連資料庫        Dim cmd As SqlCommand '定義執行命令變數        Dim res As Integer '定義傳回值變數res        cmd = New SqlCommand(cmdTxt, conn) '執行個體化conn上的SqlCommand命令,執行語句為cmdTxt        cmd.CommandType = cmdType  '命令執行的類型        cmd.Parameters.AddRange(paras)  '執行cmdTxt語句時所帶的參數        Try            '如果資料庫連接狀態為關閉則將其開啟            If conn.State = ConnectionState.Closed Then                conn.Open()            End If            '執行cmdTxt語句,並將執行結果返回res(執行成功返回的記錄總數)            res = cmd.ExecuteNonQuery()        Catch ex As Exception            '錯誤處理程式,出錯則提示            MsgBox(ex.Message, , "資料庫操作")        Finally            '如果串連狀態為開啟則將其關閉,釋放記憶體            If conn.State = ConnectionState.Open Then                conn.Close()            End If        End Try        Return res  'res作為傳回值返回    End Function    ''' <summary>    ''' 執行不帶參數的查詢操作    ''' </summary>    ''' <param name="cmdTxt">cmdTxt作為查詢時的sql語句</param>    ''' <param name="cmdType">查詢時的查詢方式</param>    ''' <returns>查詢後以表的方式返回</returns>    ''' <remarks></remarks>    Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType) As DataTable        Dim conn As SqlConnection = New SqlConnection(ConnectionString)  '串連資料庫        Dim cmd As New SqlCommand  '執行個體化命令查詢變數        Dim adataset As DataSet '定義資料緩衝變數        Dim adaptor As SqlDataAdapter '定義資料配接器變數        cmd = New SqlCommand(cmdTxt, conn) '在conn上面執行個體化命令變數cmd,執行語句cmdTxt        adaptor = New SqlDataAdapter(cmd)  '將結果綁定到資料配接器變數adaptor上面        adataset = New DataSet     '執行個體化資料緩衝變數adataset        cmd.CommandType = cmdType   '選擇命令執行的類型        Try            '如果資料庫連接狀態為關閉則將其開啟            If conn.State = ConnectionState.Closed Then                conn.Open()            End If            '向adaptor對象中填充查詢的資料            adaptor.Fill(adataset)        Catch ex As Exception            '出錯則提示            MsgBox(ex.Message, , "資料庫操作")        Finally            '如果串連狀態為開啟則將其關閉,釋放記憶體            If conn.State = ConnectionState.Open Then                conn.Close()            End If        End Try        '以表的形式返回結果        Return adataset.Tables(0)    End Function    ''' <summary>    ''' 執行帶參數的查詢操作    ''' </summary>    ''' <param name="cmdTxt">參數cmdTxt為所要執行的sql語句</param>    ''' <param name="cmdType">查詢時的查詢方式</param>    ''' <param name="paras">查詢時的命令參數paras</param>    ''' <returns>查詢後以表的方式返回</returns>    ''' <remarks></remarks>    Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable        Dim conn As SqlConnection = New SqlConnection(ConnectionString)  '串連資料庫        Dim cmd As SqlCommand  '定義命令變數cmd        Dim adaptor As SqlDataAdapter '定義資料配接器變數        Dim adataset As DataSet  '定義資料緩衝變數        cmd = New SqlCommand(cmdTxt, conn)  '在conn上面執行執行個體化命令變數,並執行語句cmdType        cmd.CommandType = cmdType    '命令執行的類型        cmd.Parameters.AddRange(paras)  '命令執行時的參數        adaptor = New SqlDataAdapter(cmd) '將結果綁定到資料配接器變數adaptor上面        adataset = New DataSet        Try            '如果資料連線狀態為關閉則開啟            If conn.State = ConnectionState.Closed Then                conn.Open()            End If            adaptor.Fill(adataset)   '向adaptor對象中填充查詢的資料        Catch ex As Exception            '出錯提示            MsgBox(ex.Message, , "資料庫操作")        Finally            '如果串連狀態為開啟則關閉,釋放記憶體            If conn.State = ConnectionState.Open Then                conn.Close()            End If        End Try        '以表格形式返回結果        Return adataset.Tables(0)    End FunctionEnd Class

           SqlHelper這個helper確實幫我們解決了不少問題,減少了代碼的重複編寫。終於深刻體會了師傅的良苦用心。在機房中有很多值得我們去學習使用實踐我們之前的理論知識。

       

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.