You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Having an IDbParameter interface, and tweaking IDbCommand.Execute methods' ParamArray handling to accept it, would allow providing named and output parameters inline, without needing to deal with ADODB.Parameter directly.
The interface should expose the ADODB.Parameter object (much like DbConnection exposes the ADODB.Connection object) - this should fit the bill:
'@Interface'@ModuleDescription("An object representing a command parameter.")Option ExplicitPublicPropertyGetParameter()AsADODB.ParameterEndPropertyPublicPropertyGetParameterName()AsStringEndPropertyPublicPropertyGetParameterValue()AsVariantEndPropertyPublicPropertyGetParameterType()AsADODB.DataTypeEnumEndPropertyPublicPropertyGetParameterDirection()AsADODB.ParameterDirectionEnumEndPropertyPublicPropertyGetParameterSize()AsLongPublicPropertyGetIsNamedParameter()AsBooleanEndProperty
Needs a StubDbParameter implementation for unit tests, and the DbParameter class needs to property-inject the properties through a number of factory methods:
Create should take in all dependencies
FromValue should take in a value (and an optional name, direction, and size)
NullValue should take in a data type (and an optional name, direction, and size)
The IsNamedParameter get-only property should return True if a name was supplied. Unit tests should validate that a command doesn't accept mixed named & ordinal parameters.
Having an
IDbParameterinterface, and tweakingIDbCommand.Executemethods'ParamArrayhandling to accept it, would allow providing named and output parameters inline, without needing to deal withADODB.Parameterdirectly.The interface should expose the
ADODB.Parameterobject (much likeDbConnectionexposes theADODB.Connectionobject) - this should fit the bill:Needs a
StubDbParameterimplementation for unit tests, and theDbParameterclass needs to property-inject the properties through a number of factory methods:Createshould take in all dependenciesFromValueshould take in a value (and an optional name, direction, and size)NullValueshould take in a data type (and an optional name, direction, and size)The
IsNamedParameterget-only property should returnTrueif anamewas supplied. Unit tests should validate that a command doesn't accept mixed named & ordinal parameters.