1. 程式人生 > >個人重構機房收費系統SqlHelper的使用

個人重構機房收費系統SqlHelper的使用

SqlHelper類用於通過一組靜態方法來封裝資料訪問功能。該類不能被繼承或例項化,因此將其宣告為包含專用建構函式的不可繼承類。在 SqlHelper類中實現的每種方法都提供了一組一致的過載。這提供了一種很好的使用 SqlHelper類來執行命令的模式,同時為開發人員選擇訪問資料的方式提供了必要的靈活性。每種方法的過載都支援不同的方法引數,因此開發人員可以確定傳遞連線、事務和引數資訊的方式。

    其實說了一大堆我認為Sqlhelper其實就是封裝一個方法,通過返回值來完成對資料庫的更改和查詢。下面說一下我在機房收費系統中用到的sqlhelper。因為我在機房收費系統中只有涉及到一個數據庫(多個表),所以

sqlhelper通過SQL引數傳遞即可連線資料庫實現查詢。

    閒話少說,看下面的程式碼:

    對於資料庫的操作我們分為更改和查詢即(增 insert、刪 delete、改 update)和 select

         1  .更改  (返回布林值)

 '資料庫連線  
    Public Function ConnectSQL() As SqlConnection
        Dim str As String = "Data Source=192.168.24.76;Initial Catalog=Charge_System;uid=sa;Pwd=123456"
        Dim conn As SqlConnection = New SqlConnection(str)
        Return conn
    End Function
    '基本資料更改  除了查詢
    Public Function operate(ByVal sql As String) As Boolean
        '資料庫連線字串
        Dim conn As SqlConnection = ConnectSQL()
        conn.Open()
        Dim cmd As New SqlCommand(sql, conn)
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        conn.Close()
        conn.Dispose()
        Return True
    End Function

   

        2.資料查詢

        對於資料查詢我們一般有兩個目的:一是讀資料,二是獲取資料。我在機房收費系統中使用資料查詢語句的時候封裝瞭如下兩個方法:

 '基本資料查詢  返回reader物件 select 語句
    Public Function Query(ByVal sql As String) As SqlDataReader
        Dim conn As SqlConnection = ConnectSQL()
        conn.Open()
        Dim cmd As New SqlCommand(sql, conn)
        Dim reader As SqlDataReader
        reader = cmd.ExecuteReader()
        Return reader
    End Function

    '資料資訊查詢  返回 datatable物件
    Public Function QueryTable(ByVal sql As String, ByVal str As String) As DataTable
        Dim conn As SqlConnection = ConnectSQL()
        conn.Open()
        Dim myAdapter As New SqlDataAdapter(sql, conn)
        Dim mySet As New DataSet
        Dim myTable As New DataTable
        myAdapter.Fill(mySet, str)
        myTable = mySet.Tables(str)
        conn.Close()
        Return myTable
    End Function

        通過上面1 和 2 對資料庫連線和操作的封裝,這樣在以後呼叫的過程中就可以減少程式碼的書寫,而且能夠進最可能的避免因為個人原因而造成的錯誤。

        舉一個簡單的例子,比如機房收費系統中需要呼叫資料庫表cardInfo中滿足要求的資訊,並且顯示出來。我們先定義這樣一個方法,來返回一個datatable型別

    Public Function QueryCard(ByVal cardno As String) As DataTable
        Dim sql As String = "填寫要查詢的條件"
        '呼叫封裝的方法
        Dim myTable As DataTable
        myTable = QueryTable(sql, "學生資訊表")

    End Function
        在UI層中我們可以通過逐層返回datatable即方法中的myTable。資料顯示我使用的是DataGridView 控制元件。直接使用該控制元件的屬性賦值即可:DataGridView.datasource=mytable

        這就是我眼中的sqlhelper ,有不到之處歡迎指正。