Un commande avec un String contenant un '

Résolu
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006 - 2 mars 2006 à 19:37
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 3 mars 2006 à 19:56
Bonjour je fais un programme en VB.net, je passe une commande a ma base de donnée, dans cette commande il y a un champ texte, lorsque le texte contient un ' , je ne peux pas le sender, sa plante...
Ma commande :

UPDATE TblDate SET Texte = '" & Trim(value) & " ' WHERE .....

C'est donc dans la variable value qu'il peut y avoir un ou des '

Donc si vous savez comment je peux faire pour que sa ne plante pas et que sa save bien dans la BD, genez vous pas

Merci d'avance!!!

4 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
3 mars 2006 à 10:17
salut

il suffit de doubler ton caractere '.

quelque chose dans le genre :

UPDATE TblDate SET Texte = '" & Replace(Trim(value), "'", "''") & " ' WHERE .....

attention il s'agit bien de deux simples qutote ' et non d'un guillemet "

avec ca ta requete fonctionnera
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 mars 2006 à 20:13
Salut,

Utiliser, comme c'est conseillé, les requêtes paramétrées.
Voir SqlParameter si SQL Server, et la même chose existe pour les providers Oracle, OleDb, Odbc, et en général aussi pour ceux fournis par l'éditeur du SGBD, si c'est la cas.

/*
coq
MVP Visual C#
*/
0
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006
3 mars 2006 à 14:57
MERCI aieeeuuuuu, merci aussi coq!

Je savais qu'il avait quelque chose du genre a faire pour que sa marche mais j'ai a peu pres tout essayer sauf de le doubler!!!

Et juste pour m'en assurer, es-ce qu'il y a d'Autre caratère que ' qui pourrait faire planter ma comande?? (Je suis en train d'en tester mais si vous connaiser les caratères "problématique" sa serait interresant de le savoir!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
3 mars 2006 à 19:56
Non, non et non, pas de concaténation tout court !
En se contentant de doubler les caractères que tu connais (et si tu en oublies, dommage...), tu peux aussi mettre une pancarte sur ton application, disant "Kill me".
Sérieusement, renseignez vous rien que sur les attaques par injection SQL (un exemple parmis tant d'autres) et utilisez les requêtes paramétrées.

"Et juste pour m'en assurer, es-ce qu'il y a d'Autre caratère que ' qui pourrait faire planter ma comande?? (Je suis en train d'en tester mais si vous connaiser les caratères "problématique" sa serait interresant de le savoir!!"
=> avec les requêtes paramétrées.

/*
coq
MVP Visual C#
*/
0
Rejoignez-nous