Tjenare pellesoftare! I ditt fall ska du börja med att deklarera en OleDbParameterCollection och inte en collection. Körde med object, fungerar fint än så länge! och vad gör man då herr/fru P? jo men var det verkligen du som löste den? Fredde gav ju tips om Object! Hej.parameter funktion....
Jo det ligger till så här. Jag försöker göra en db-wrapper men har lite problem med hur jag ska konstruera funktionen som lägger till parametrar. Jag har tänkt mig något sånt här:
Funktionen i affärsklassen:
<code>
Public Function test()
Dim strSql as String = "SELECT * FROM tbl_users Where Username=?"
CreateParameter("@Uname",DbType.String,"erik")
Return GetDataSet(strSql)
End Function
</code>
Som anropar klassen CreateParameters i dataaccess klassen
<code>
Private Parameter As IDataParameter ' utanför klassen
Private paramCollection As New Collection() ' från visual basic namespace... vilket inte borde vara så bra....
Function CreateParameter(ParamName As String, ParamType As DbType, ParamValue As XXX) As IDataParameter
Select Case strCnnDBType
Case "Mysql"
Parameter = New OdbcParameter(ParamName,ParamType)
Parameter.Value = ParamValue
End Select
ParamCollection.Add(Parameter)
End Function
</code>
Nu till problemet... Jag skickar ju in en variabel av okänd typ. Vad borde jag byta ut XXX mot? har testat mot string och då fungerar koden men jag kan ju vilja använda mig av integer/date osv.
Kommentarer?
Tips?Sv: parameter funktion....
Låt sen din parameterbyggare t emot en parameterkolletion och låte användaren i ditt övre datalager fylla på parametrarna. Din DB-wrpper borde ägna sig åt att knuta ihop parametrarna med rätt command-objekt.
Det är i alla fall vad som är de facto standard nu.
Annars är det object som gäller.... Eller varför inte äverladdning??
<code>
Public sub AddParams(name as string, type as dbtype, value as integer)
' Kod
End sub
Public sub AddParams(name as string, type as dbtype, value as string)
' Kod
End sub
Public sub AddParams(name as string, type as dbtype, value as double)
' Kod
End sub
</code>
I detta fall kan du dessutom låta din sub bestämma vilken dbtype som ska användas beroende på inparameter. Så slipper du den parametern också.
//Mikael.NETSv: parameter funktion....
Bytte från Collection till arraylist... kanske ska byta till PRvParameterCollection!Sv: parameter funktion....
Man markerar frågan som LÖST!!!!
*vill ha poängen*
//Mikael.NETSv: parameter funktion....
Men du kan få den om du svarar på följdfrågan. Nu skickar jag in så här:
Function CreateParameter(ParamName As String, ParamType as DbType, ParamValue As Object) As IDataParameter
Om jag nu skickar in det av typen object är då inte dbTypen onödig att ha med?Sv: parameter funktion....
Nu kanske jag förstör men svaret är nej.
Kollar du på parameter.Value är den av typen object.
DBType avgör sedan vad det (object) "skall bli" för datatyp.
//fredda