PDA

View Full Version : Problemi inserimento variabili in un sqlcommand VB


KeySim
18-09-2009, 12:52
Ciao a tutti. Espongo il mio problema :D

Sto lavorando in visual basic è dovrei fare delle operazioni in un database sqlserver e fin qui tutto bene.. il problema è che quando tento di mettere una variabile in un comando sql del tipo:

"UPDATE [Prodotti] SET Quantita="+quantita+" WHERE Id_Prodotto ="+Idprodotto+"", conness)

mi da errore : Cast non valido dalla stringa "wHERE Id_Prodotto =" al tipo 'Double'.

son abituato a lavorare in c# per questo mi da problemi.. quindi ecco la mia domanda:

Qualcuno sa come si fà a inserire una variabile in un sqlcommand??? se non ci vogliono i " + " come ho messo io che ci vuole? help urgente

RaouL_BennetH
18-09-2009, 12:59
Ciao :)

In Vb.Net se non sbaglio si fa così:



'" & nomeVar & "'



ovvero la devi racchiudere tra apici e doppi apici.

KeySim
18-09-2009, 13:05
grazie mille sei un amore muahahahah ti faccio un monumento XD tre ore con un mio collega a trovare na soluzione ahah grazie ancora potete chiudere:mc: ! ^^ :D

RaouL_BennetH
18-09-2009, 13:52
:D

Visto che ci siete, date uno sguardo ai SqlParameter.

In genere inserire variabili con il modo 'brutale' può portare a qualche problema.

Il più semplice problema è che la query non accetti alcuni caratteri:



Dim sql As String = "UPDATE bla SET campo = '" & variabile & "' _
WHERE id = '" & altra_variabile & "'



Se la tua 'variabile' è : D'Angio
otterrai un errore e la query non verrà eseguita.
Con questo modo dovrai dire ogni volta a 'variabile' qualcosa del genere:



'" & variabile.ToString().Replace("'", "''") & "'



che, oltre ad essere candidata all'horror code, è anche poco flessibile.

Il problema più pesante che invece ti può capitare, magari adottando questo modo di scrivere query su ambienti web, è una bella sql injection ...

Con i SqlParameter (che non sono l'unico modo... ) eviteresti tutto questo.

RaouL.