在做機房收費系統中SQLHelper類的封裝是必不可少的。我們先來看看SQLHelper到底是個什麼東西 ?
SqlHelper是一個基於·NET Framework的數據庫操作組件。組件中包含數據庫操作方法。SqlHelper用於簡化你重複的去寫那些數據庫連接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封裝過後通常是只需要給方法傳入一些參數如數據庫連接字符串,SQL參數等,就可以訪問數據庫了,很方便。SqlHelpe組件中包含數據庫操作方法,SqlHelper有很多版本,主要以微軟一開始發佈的SqlHelper類,後面包含進了Enterprise Library開源包中了。還有一個主要版本是dbhelper.org開源的sqlhelper組件,優點是簡潔,高性能,不僅僅支持sqlserver,同時支持sqlserver、oracle、access、Mysql數據庫,也是一個開源項目,提供免費下載。
Imports System.Data.SqlClient
''' <summary>
'''對數據庫的查詢,更新,刪除數據操作
''' </summary>
''' <remarks>2013.12.20 by Gelupu</remarks>
Public Class SqlHelper
Dim strCon As String
Dim sqlCon As SqlConnection
Dim sqlCmd As SqlCommand
Dim dt As DataTable
Dim sqlApt As SqlDataAdapter
''' <summary>
''' 構造方法,初始化sqlCon
''' </summary>
''' <remarks></remarks>
Sub New()
'設置連接字符串
strCon = "Server=Gelupu-PC;Database=ChargeSys;User ID=sa;Password=123456"
'初始化sqlCon
sqlCon = New SqlConnection(strCon)
End Sub
''' <summary>
''' 打開數據庫連接
''' </summary>
''' <remarks></remarks>
Public Sub OpenConnection()
sqlCon.Open()
End Sub
''' <summary>
''' 關閉數據庫連接
''' </summary>
''' <remarks></remarks>
Public Sub CloseConnection()
sqlCon.Close()
sqlCon = Nothing
End Sub
''' <summary>
''' 執行不帶參數的查詢命令,返回數據表
''' </summary>
''' <param name="cmdText">SQL語句字符串</param>
''' <param name="cmdType">命令類型</param>
''' <returns>數據表</returns>
''' <remarks>2013.12.15 by Gelupu</remarks>
Public Function ExecuteQueryNoParameters(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
'通過sqlCon數據庫連接對象的CreatCommand方法創建一SqlCommand實例對象
sqlCmd = sqlCon.CreateCommand()
'給SqlCommand對象CommandText屬性賦值
sqlCmd.CommandText = cmdText
'給SqlCommand對象CommandType屬性賦值
sqlCmd.CommandType = cmdType
'實例化DataTable
dt = New DataTable
'實例化SqlDataAdapter
sqlApt = New SqlDataAdapter(sqlCmd)
Try
'打開數據庫連接
Me.OpenConnection()
'執行命令,填充DataTable
sqlApt.Fill(dt)
'返回DataTable
Return dt
Catch ex As Exception
'返回錯誤信息
Return dt
Finally
'釋放數據庫操作對象
If Not IsNothing(sqlCmd) Then
sqlCmd.Dispose()
sqlCmd = Nothing
End If
'關閉數據庫連接
If Not IsNothing(sqlCon) Then
Me.CloseConnection()
End If
End Try
End Function
''' <summary>
''' 執行帶參數的查詢命令,返回數據表
''' </summary>
''' <param name="cmdText">SQL查詢語句字符串</param>
''' <param name="cmdType">命令類型</param>
''' <param name="Para">命令參數數組</param>
''' <returns>數據表</returns>
''' <remarks>2013/12/15 by Gelupu</remarks>
'''
Public Function ExecuteQueryWithParameters(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal para() As SqlParameter) As DataTable
'通過sqlCon數據庫連接對象的CreatCommand方法創建一SqlCommand實例對象
sqlCmd = sqlCon.CreateCommand()
'給SqlCommand對象CommandText屬性賦值
sqlCmd.CommandText = cmdText
'給SqlCommand對象CommandType屬性賦值
sqlCmd.CommandType = cmdType
'實例化DataTable
dt = New DataTable
'實例化SqlDataAdapter
sqlApt = New SqlDataAdapter(sqlCmd)
sqlCmd.Parameters.AddRange(para)
Try
'打開數據庫連接
Me.OpenConnection()
'執行命令,填充DataTable
sqlApt.Fill(dt)
'返回DataTable
Return dt
Catch ex As Exception
'返回錯誤信息
Return dt
Finally
'釋放數據庫操作對象
If Not IsNothing(sqlCmd) Then
sqlCmd.Dispose()
sqlCmd = Nothing
End If
'關閉數據庫連接
If Not IsNothing(sqlCon) Then
Me.CloseConnection()
End If
End Try
End Function
''' <summary>
''' 執行不帶參數的增加,刪除,修改命令,返回布爾值
''' </summary>
''' <param name="cmdText">SQL語句字符串</param>
''' <param name="cmdType">命令類型</param>
''' <returns>布爾值,標示命令是否執行成功</returns>
''' <remarks>2013.12.15 by Gelupu</remarks>
Public Function ExecuteNotQueryNoParameters(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean
'傳入SQL語句和連接字符串,初始化SqlComm
sqlCmd = New SqlCommand(cmdText, sqlCon)
sqlCmd.CommandType = cmdType
Try
sqlCon.Open()
sqlCmd.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
Finally
'釋放數據庫操作對象資源
If Not IsNothing(sqlCmd) Then
sqlCmd.Dispose()
sqlCmd = Nothing
End If
'關閉數據庫連接
If Not IsNothing(sqlCon) Then
Me.CloseConnection()
End If
End Try
End Function
''' <summary>
''' 執行帶參數的數據庫數據增加,刪除,修改命令,返回布爾值
''' </summary>
''' <param name="cmdText">SQL語句字符串</param>
''' <param name="cmdType">命令類型</param>
''' <param name="para">命令參數數組</param>
''' <returns>布爾值,標示命令是否執行成功</returns>
''' <remarks>2013.12.15 by Gelupu</remarks>
Public Function ExecuteNotQueryWithParameters(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal para() As SqlParameter) As Boolean
'傳入SQL語句和連接字符串,初始化SqlComm
sqlCmd = New SqlCommand(cmdText, sqlCon)
'設置命令類型
sqlCmd.CommandType = cmdType
'給命令參數賦值
sqlCmd.Parameters.AddRange(para)
Try
'打開數據庫連接
sqlCon.Open()
'執行命令,返回結果
'Return sqlCmd.ExecuteNonQuery()>0
sqlCmd.ExecuteNonQuery()
Return True
Catch ex As Exception
'返回失敗
Return False
Finally
'釋放數據庫操作對象資源
If Not IsNothing(sqlCmd) Then
sqlCmd.Dispose()
sqlCmd = Nothing
End If
'關閉數據庫連接
If Not IsNothing(sqlCon) Then
Me.CloseConnection()
End If
End Try
End Function
''' <summary>
''' 設置參數命令
''' </summary>
''' <param name="paramName">命令參數名稱</param>
''' <param name="sqlType">命令參數的數據類型</param>
''' <param name="strValue">命令參數值</param>
''' <returns>命令參數數組</returns>
''' <remarks>2013.12.15 by Gelupu</remarks>
Public Function AddSqlParameter(ByVal paramName As String, ByVal sqlType As SqlDbType, ByVal strValue As String) As SqlParameter
'初始化命令參數
Dim sqlPara As New SqlParameter(paramName, sqlType)
'設置命令參數的值
sqlPara.Value = strValue
'返回命令參數
Return sqlPara
End Function
End Class