最近要在不同的数据库之间连接,所以写了一个通用的数据库连接类。现跟大家讨论和分享,希望给大家有点帮助,也能给我指点更好的设计方式。
''通用数据库工厂
Imports System.Data.Common
Imports System.Data.OracleClient
''' <summary>
'''
''' 利用system.data.common中的dbproviderfactory、dbconnection、dbcommand、...等操作数据库
''' 通用数据库工厂
''' </summary>
''' <remarks></remarks>
Public Class DbFactoryCommon
Private Provider As DbProvider
Private Factory As DbProviderFactory
Private dbConnection As DbConnection
Private dbCommand As DbCommand
Private dbDataAdapter As DbDataAdapter
Public Enum DbProvider
SqlClient
Oledb
Odbc
Oracle
End Enum
Public Property DatabaseProvider() As DbProvider
Get
Return Me.Provider
End Get
Set(ByVal value As DbProvider)
BuildFactory()
Provider = value
End Set
End Property
Public Property Connection() As DbConnection
Get
Return Me.dbConnection
End Get
Set(ByVal value As DbConnection)
Me.dbConnection = value
End Set
End Property
Public Property Command() As DbCommand
Get
Return Me.dbCommand
End Get
Set(ByVal value As DbCommand)
Me.dbCommand = value
End Set
End Property
Public Property DataAdapter() As DbDataAdapter
Get
Return Me.dbDataAdapter
End Get
Set(ByVal value As DbDataAdapter)
Me.dbDataAdapter = value
End Set
End Property
Public Sub New()
End Sub
Public Sub New(ByVal provider As DbProvider)
BuildFactory()
End Sub
Private Sub BuildFactory()
Select Case Provider
Case DbProvider.SqlClient
Factory = SqlClient.SqlClientFactory.Instance
Case DbProvider.Oledb
Factory = OleDb.OleDbFactory.Instance
Case DbProvider.Odbc
Factory = Odbc.OdbcFactory.Instance
Case DbProvider.Oracle
Factory = OracleClient.OracleClientFactory.Instance
Case Else
Factory = Nothing
End Select
End Sub
Public Function getConnection() As DbConnection
Dim Connection As DbConnection
Try
Connection = Factory.CreateConnection()
Return Connection
Catch ex As Exception
Throw ex
End Try
End Function
Public Function getCommand() As DbCommand
Dim Command As DbCommand
Try
Command = Factory.CreateCommand()
Return Command
Catch ex As Exception
Throw ex
End Try
End Function
Public Function getDataAdapter() As DbDataAdapter
Dim DataAdapter As DbDataAdapter
Try
DataAdapter = Factory.CreateDataAdapter()
Return DataAdapter
Catch ex As Exception
Throw ex
End Try
End Function
Public Function getCommandBuild() As DbCommandBuilder
Dim CommandBuilder As DbCommandBuilder
Try
CommandBuilder = Factory.CreateCommandBuilder()
Return CommandBuilder
Catch ex As Exception
Throw ex
End Try
End Function
End Class