Code:
#Region "CreateParameter"
Public Overloads Function CreateParameter() As DbParameter
Dim param As DbParameter = Nothing
CreateParameter_Factory(param)
Return param
End Function
Public Overloads Function CreateParameter(ByVal strName As String, ByVal value As Object) As DbParameter
Dim param As DbParameter = Nothing
Dim args As Object() = {strName, value}
CreateParameter_Factory(param, args)
Return param
End Function
Public Overloads Function CreateParameter(ByVal strName As String, ByVal dtypType As DbType) As DbParameter
Dim param As DbParameter = Nothing
Dim args As Object() = {strName, dtypType}
CreateParameter_Factory(param, args)
Return param
End Function
Public Overloads Function CreateParameter(ByVal strName As String, ByVal dtypType As DbType, ByVal intsize As Integer) As DbParameter
Dim param As DbParameter = Nothing
Dim args As Object() = {strName, dtypType, intsize}
CreateParameter_Factory(param, args)
Return param
End Function
Public Overloads Function CreateParameter(ByVal strName As String, ByVal dtypType As DbType, ByVal intSize As Integer, ByVal strSourceColumn As String) As DbParameter
Dim param As DbParameter = Nothing
Dim args As Object() = {strName, dtypType, intSize, strSourceColumn}
CreateParameter_Factory(param, args)
Return param
End Function
Private Sub CreateParameter_Factory(ByRef param As DbParameter, Optional ByVal args As Object() = Nothing)
Try
If IsNothing(args) Then
param = CType(Activator.CreateInstance(typParameterTypes(CInt(_provider))), DbParameter)
Else
param = CType(Activator.CreateInstance(typParameterTypes(CInt(_provider)), args), DbParameter)
End If
Catch e As TargetInvocationException
Throw New SystemException(e.InnerException.Message, e.InnerException)
End Try
End Sub
#End Region
#Region "CreateCommandBuilder"
Public Overloads Function CreateCommandBuilder() As DbCommandBuilder
Dim cb As DbCommandBuilder = Nothing
Try
cb = CType(Activator.CreateInstance(typCommandBuilderTypes(CInt(_provider))), DbCommandBuilder)
Catch e As TargetInvocationException
Throw New SystemException(e.InnerException.Message, e.InnerException)
End Try
Return cb
End Function
Public Overloads Function CreateCommandBuilder(ByVal daDataAdapter As DbDataAdapter) As DbCommandBuilder
Dim cb As DbCommandBuilder = Nothing
Dim args As Object() = {daDataAdapter}
Try
cb = CType(Activator.CreateInstance(typCommandBuilderTypes(CInt(_provider)), args), DbCommandBuilder)
Catch e As TargetInvocationException
Throw New SystemException(e.InnerException.Message, e.InnerException)
End Try
Return cb
End Function
#End Region
#Region "CreateConnectionStringBuilder"
Public Overloads Function CreateConnectionStringBuilder() As DbConnectionStringBuilder
#If USE_PERVASIVE Then
If _provider = ProviderType.Pervasive Then Return Nothing
#End If
Dim csb As DbConnectionStringBuilder = Nothing
Try
csb = CType(Activator.CreateInstance(typConnectionStringBuilderTypes(CInt(_provider))), DbConnectionStringBuilder)
Catch e As TargetInvocationException
Throw New SystemException(e.InnerException.Message, e.InnerException)
End Try
Return csb
End Function
Public Overloads Function CreateConnectionStringBuilder(ByVal strConnectionString As String) As DbConnectionStringBuilder
#If USE_PERVASIVE Then
If _provider = ProviderType.Pervasive Then Return Nothing
#End If
Dim csb As DbConnectionStringBuilder = Nothing
Dim args As Object() = {strConnectionString}
Try
csb = CType(Activator.CreateInstance(typConnectionStringBuilderTypes(CInt(_provider)), args), DbConnectionStringBuilder)
Catch e As TargetInvocationException
Throw New SystemException(e.InnerException.Message, e.InnerException)
End Try
Return csb
End Function
#End Region
End Class
#End If
Special thanks to mendhak and jmcilhinney for getting me straightened out with this one.