Imports System
Imports System.Data
Namespace DotNetDataProviderTemplate
Public Class TemplateParameter
Implements IDataParameter
Dim m_dbType As DbType = DbType.Object
Dim m_direction As ParameterDirection = ParameterDirection.Input
Dim m_fNullable As Boolean = False
Dim m_sParamName As String
Dim m_sSourceColumn As String
Dim m_sourceVersion As DataRowVersion = DataRowVersion.Current
Dim m_value As Object
Public Sub New()
MyBase.New
End Sub
Public Sub New(ByVal parameterName As String, ByVal type As DbType)
MyBase.New
m_sParamName = parameterName
m_dbType = type
End Sub
Public Sub New(ByVal parameterName As String, ByVal value As Object)
MyBase.New
m_sParamName = parameterName
Me.Value = value
' Setting the value also infers the type.
End Sub
Public Sub New(ByVal parameterName As String, ByVal type As DbType, ByVal sourceColumn As String)
MyBase.New
m_sParamName = parameterName
m_dbType = dbType
m_sSourceColumn = sourceColumn
End Sub
Public Property DbType As DbType Implements IDataParameter.DbType
Get
Return m_dbType
End Get
Set
m_dbType = value
End Set
End Property
Public Property Direction As ParameterDirection Implements IDataParameter.Direction
Get
Return m_direction
End Get
Set
m_direction = value
End Set
End Property
Public ReadOnly Property IsNullable As Boolean Implements IDataParameter.IsNullable
Get
Return m_fNullable
End Get
End Property
Public Property ParameterName As String Implements IDataParameter.ParameterName
Get
Return m_sParamName
End Get
Set
m_sParamName = value
End Set
End Property
Public Property SourceColumn As String Implements IDataParameter.SourceColumn
Get
Return m_sSourceColumn
End Get
Set
m_sSourceColumn = value
End Set
End Property
Public Property SourceVersion As DataRowVersion Implements IDataParameter.SourceVersion
Get
Return m_sourceVersion
End Get
Set
m_sourceVersion = value
End Set
End Property
Public Property Value As Object Implements IDataParameter.Value
Get
Return m_value
End Get
Set
m_value = value
m_dbType = _inferType(value)
End Set
End Property
Private Function _inferType(value As Object) As DbType
Select Case (Type.GetTypeCode(value.GetType()))
Case TypeCode.Empty
Throw New SystemException("Invalid data type")
Case TypeCode.Object
Return DbType.Object
Case TypeCode.DBNull
Case TypeCode.Char
Case TypeCode.SByte
Case TypeCode.UInt16
Case TypeCode.UInt32
Case TypeCode.UInt64
' Throw a SystemException for unsupported data types.
Throw New SystemException("Invalid data type")
Case TypeCode.Boolean
Return DbType.Boolean
Case TypeCode.Byte
Return DbType.Byte
Case TypeCode.Int16
Return DbType.Int16
Case TypeCode.Int32
Return DbType.Int32
Case TypeCode.Int64
Return DbType.Int64
Case TypeCode.Single
Return DbType.Single
Case TypeCode.Double
Return DbType.Double
Case TypeCode.Decimal
Return DbType.Decimal
Case TypeCode.DateTime
Return DbType.DateTime
Case TypeCode.String
Return DbType.String
Case Else
Throw New SystemException("Value is of unknown data type")
End Select
End Function
End Class
End NameSpace