martedì 3 gennaio 2012

[VB6] ADODB Command Parameters

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.

Un Click su "Mi Piace" è il modo migliore per ringraziare l'autore di questo articolo.



0 commenti:

Posta un commento

 
Design by Free WordPress Themes Modificato da MarcoGG