"AddWithValue" をサポートしていない (一部のプロバイダーはサポートしていない) プロバイダーを使用している場合は、拡張メソッドを使用して独自のプロバイダーを作成できます。これは、(IDbCommand を拡張する) いくつかのオーバーロードを含む "AddWithValue" 拡張メソッドの例です。
''' <summary>
''' Adds a parameter into the IDbCommand and sets it's name, value and type.
''' </summary>
''' <param name="cmd"></param>
''' <param name="paramName"></param>
''' <param name="paramValue"></param>
''' <param name="dbType"></param>
''' <remarks></remarks>
<Extension()> _
Public Sub AddWithValue(ByVal cmd As IDbCommand, ByVal paramName As String, ByVal paramValue As Object, ByVal dbType As DbType)
Dim param As DbParameter = cmd.CreateParameter
param.ParameterName = paramName
param.DbType = dbType
param.Value = paramValue
cmd.Parameters.Add(param)
End Sub
''' <summary>
''' Adds a parameter into the IDbCommand and name and value.
''' </summary>
''' <param name="cmd"></param>
''' <param name="paramName"></param>
''' <param name="paramValue"></param>
''' <remarks></remarks>
<Extension()> _
Public Sub AddWithValue(ByVal cmd As IDbCommand, ByVal paramName As String, ByVal paramValue As Object)
Dim param As DbParameter = cmd.CreateParameter
param.ParameterName = paramName
param.Value = paramValue
cmd.Parameters.Add(param)
End Sub
''' <summary>
''' Adds a parameter into the IDbCommand and sets it's name, value and type.
''' </summary>
''' <param name="cmd"></param>
''' <param name="paramName"></param>
''' <param name="paramValue"></param>
''' <param name="dbType"></param>
''' <remarks></remarks>
<Extension()> _
Public Sub AddWithValue(ByVal cmd As IDbCommand, ByVal paramName As String, ByVal paramValue As Object, ByVal dbType As DbType, ByVal size As Integer)
Dim param As DbParameter = cmd.CreateParameter
param.ParameterName = paramName
param.DbType = dbType
param.Value = paramValue
param.Size = size
cmd.Parameters.Add(param)
End Sub