📄 wdabase.vb
字号:
Imports Microsoft.Win32
Imports System.Data
Imports System.Data.SqlClient
Public Class WDABase
Implements IDisposable
'Class level variables that are available to classes that instantiate me
Public SQL As String
Public Connection As SqlConnection
Public Command As SqlCommand
Public DataAdapter As SqlDataAdapter
Public DataReader As SqlDataReader
Private disposed As Boolean = False
Public Sub New(ByVal Company As String, ByVal Application As String)
'Declare variables
Dim objReg As RegistryKey
'Key size must be 128 bits to 192 bits in increments of 64 bits
Dim bytKey() As Byte = System.Text.Encoding.UTF8.GetBytes( _
"G~v!x@Z#c$a%C^b&h*K(e)K_")
Dim bytIV() As Byte = System.Text.Encoding.UTF8.GetBytes( _
"rgY^p$b%")
Using objCrypto As New WDACrypto(bytKey, bytIV)
Try
'Open the registry key
objReg = Registry.LocalMachine.OpenSubKey("SOFTWARE\" & _
Company & "\" & Application & "\Database", False)
'Build the SQL connection string from the registry values
'and initialize the Connection object
Connection = New SqlConnection( _
"Data Source=" & objReg.GetValue("Server") & ";" & _
"Database=" & objReg.GetValue("Database") & ";" & _
"User ID=" & objCrypto.Decrypt( _
objReg.GetValue("Login")) & ";" & _
"Password=" & objCrypto.Decrypt( _
objReg.GetValue("Password")) & ";")
Catch ExceptionErr As Exception
Throw New System.Exception(ExceptionErr.Message, _
ExceptionErr.InnerException)
Finally
'Clean up
objReg = Nothing
End Try
End Using
End Sub
' IDisposable
Private Overloads Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposed Then
If disposing Then
' TODO: put code to dispose managed resources
If Not DataReader Is Nothing Then
DataReader.Close()
DataReader = Nothing
End If
If Not DataAdapter Is Nothing Then
DataAdapter.Dispose()
DataAdapter = Nothing
End If
If Not Command Is Nothing Then
Command.Dispose()
Command = Nothing
End If
If Not Connection Is Nothing Then
Connection.Close()
Connection.Dispose()
Connection = Nothing
End If
End If
' TODO: put code to free unmanaged resources here
End If
Me.disposed = True
End Sub
#Region " IDisposable Support "
' This code added by Visual Basic to correctly implement the disposable pattern.
Public Overloads Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(False)
MyBase.Finalize()
End Sub
#End Region
Public Sub OpenConnection()
Try
Connection.Open()
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
Catch InvalidOperationExceptionErr As InvalidOperationException
Throw New System.Exception(InvalidOperationExceptionErr.Message, _
InvalidOperationExceptionErr.InnerException)
End Try
End Sub
Public Sub CloseConnection()
Connection.Close()
End Sub
Public Sub InitializeCommand()
If Command Is Nothing Then
Try
Command = New SqlCommand(SQL, Connection)
'See if this is a stored procedure
If Not SQL.ToUpper.StartsWith("SELECT ") _
And Not SQL.ToUpper.StartsWith("INSERT ") _
And Not SQL.ToUpper.StartsWith("UPDATE ") _
And Not SQL.ToUpper.StartsWith("DELETE ") Then
Command.CommandType = CommandType.StoredProcedure
End If
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
End Try
End If
End Sub
Public Sub AddParameter(ByVal Name As String, ByVal Type As SqlDbType, _
ByVal Size As Integer, ByVal Value As Object)
Try
Command.Parameters.Add(Name, Type, Size).Value = Value
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
End Try
End Sub
Public Sub InitializeDataAdapter()
Try
DataAdapter = New SqlDataAdapter
DataAdapter.SelectCommand = Command
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
End Try
End Sub
Public Sub FillDataSet(ByRef oDataSet As DataSet, ByVal TableName As String)
Try
InitializeCommand()
InitializeDataAdapter()
DataAdapter.Fill(oDataSet, TableName)
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
Finally
Command.Dispose()
Command = Nothing
DataAdapter.Dispose()
DataAdapter = Nothing
End Try
End Sub
Public Sub FillDataTable(ByRef oDataTable As DataTable)
Try
InitializeCommand()
InitializeDataAdapter()
DataAdapter.Fill(oDataTable)
Catch OleDbExceptionErr As SqlException
Throw New System.Exception(OleDbExceptionErr.Message, _
OleDbExceptionErr.InnerException)
Finally
Command.Dispose()
Command = Nothing
DataAdapter.Dispose()
DataAdapter = Nothing
End Try
End Sub
Public Function ExecuteStoredProcedure() As Integer
Try
OpenConnection()
ExecuteStoredProcedure = Command.ExecuteNonQuery()
Catch ExceptionErr As Exception
Throw New System.Exception(ExceptionErr.Message, _
ExceptionErr.InnerException)
Finally
CloseConnection()
End Try
End Function
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -