Descrizione :
Un mio esempio di utilizzo corretto dei Parameters con ADODB e Sql Server.
+ Articolo :
Per moltissimi utenti ADODB in ambiente VB6 è sinonimo di : costruzione della stringa Sql concatenando valori e direttive Sql.
La maggior parte di coloro che passano da VB6 a VB.NET inoltre si portano dietro questa cattiva abitudine.
Ho preso questo esempio da una mia soluzione data ad utente di un Forum.
La Tabella di Test "T_Prova" è su Sql Server.
Nella Tabella "T_Prova" il Campo "Testo" è un VarChar(50), mentre il Campo "Numero" è un Decimal (8,2), quindi Precisione 8 e Scala 2 ( il minimo vitale per poter scrivere un dato Double come 123456.78, che era quello richiesto ).
Non mi soffermo sui dettagli della costruzione della CN ( Connection String ) per Sql Server.
Ho già trattato in modo abbastanza esteso l'argomento in ambiente VB.NET :
http://marcoggblog.blogspot.com/2011/11/vbnet-connessione-ad-sql-server-express.html
Inoltre segnalo sempre il celebre :
http://www.connectionstrings.com/
Nell'esempio seguente l'operazione eseguita è una INSERT :
'...
Dim CMD As ADODB.Command
Set CMD = New ADODB.Command
With CMD
CN.Open
.ActiveConnection = CN
.CommandType = adCmdText
.CommandText = "INSERT INTO T_Prova (Testo, Numero) VALUES (?, ?)"
.Parameters.Append .CreateParameter("@Testo", adVarChar, adParamInput, 50)
.Parameters.Append .CreateParameter("@Numero", adDecimal, adParamInput)
With .Parameters("@Numero")
.Precision = 8
.NumericScale = 2
End With
.Execute()
End With
'...Seguono ovviamente le solite istruzioni di chiusura e rilascio.
L'ordine con cui vengono "appesi" i Parameters al Command sarà lo stesso con cui verranno passati alla clausola VALUES(?, ?, ..., ?).
In questo modo si eliminano alla base tutti i possibili errori da concatenazione.
+ Fine Articolo.



10:00
MarcoGG

Posted in:
0 commenti:
Posta un commento