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.
0 commenti:
Posta un commento