ca évite les bugs et l'injection sql (mieux expliqué sur le net que ce qui va suivre je pense)
si tu as un textbox où tu peux faire une recherche sur un nom de personne
et que ta requete est
commandtext = "SELECT * FROM table where nom like '%" & textbox.text.replace("'","''") & "%'"
si l'utilisateur entre dans le textbox machin
la requete concaténée est ok est ressemble à ca
SELECT * FROM table where nom like '%machin%'
maintenant s'il entre
%' DELETE FROM table SELECT '
la requete devient
1 2 3
| SELECT * FROM table where nom like '%%'
DELETE FROM table
SELECT '%' |
ce qui fait qu'il vient de vider la table
en théorie quelqu'un qui veut faire du sql injection commence par taper un bout de requete qui va lui donner le nom des tables de la base
ensuite s'il en voit une qui risque de contenir des logins/mots de passe il va voir dedans etc...
les parameters sécurisent donc la requete
et en plus de sécuriser ca s'occupe des problèmes d'interopérabilité, genre doubler les ' sur les string
ou encore pour les dates, tu donnes une variable date de vb.net et c'est le framework qui s'occupe de mettre ca dans le format date de la base de données
parce que selon le sgbdr le mois est avant ou après l'année, et avec une concaténation c'est loin d'être terrible, et puis si tu changes de base de données il faut que tu changes tout ton code
donc voir la propriétés parameters sur l'objet dbcommand
Partager