Apostrophe dans requete sql [Résolu]

Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
- - Dernière réponse : sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
- 31 janv. 2008 à 14:08
Bonjour,
je suis bloqué sur une requête SQL à cause d'un apostrophe et je ne sais pas comment résoudre le problème :
voici un exemple :
dans une listbox il y a un certains nombre de films : dont "L'extra-terrestre"
et au clic de la listbox, il y a exécution de la requête SQL qui doit afficher des infos le concernant dans des labels.
la requête est la suivante :
"SELECT * FROM Movies WHERE Title = '"+Listbox1.SelectedItem.ToString().+"';"
et voici le message d'erreur :
Erreur de syntaxe(opérateur absent) dans l'expression 'SELECT * FROM Movies WHERE Title = 'L'extraterrestre';'.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
37
3
Merci
Salut,
Avec une requête paramétrée tu ne devrais pas avoir ce problème.
Voire:

http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx
http://www.csharpfr.com/tutoriaux/COMMENT-FAIRE-REQUETE-PARAMETREE-DANS-BASE-DONNEE_710.aspx

<hr />
-My Blog-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
39
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
22 mai 2008
3
Merci
Salut,

Deux solutions s'offre à toi, une simple, une un peu moins simple et pas très optimisée ...

- Solution 1 : utilise une requête paramétrée. (ici)

- Solution 2 (j'aime pas trop cette méthode mais au choix) : quand tu insère un élèment tu remplace ton caractère apostrophe par un autre et inversement quand tu le sélectionne et quand tu fait une recherche.

Bon courage

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de gilletcsteph
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
29
0
Merci
Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
0
Merci
Merci,
il est vraiment qu'il faut prendre au plus tôt les bonnes habitudes afin d'éviter un max les problèmes
Commenter la réponse de gabs77
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008
0
Merci
Avez vous aussi s'il vous plait un lien avec un tutoriel pour les requêtes paramétrées mais en VB.net?

Merci d'avance
Commenter la réponse de Rockman52
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
29
0
Merci
hum... VB.net ou C#... c'est pareil.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008
0
Merci
Peux tu dans ce cas la m'indiquer comment tu convertis ceci en VB.NET?

string sql = "SELECT * FROM utilisateurs WHERE age<=@age";
DbParameter param = cmd.CreateParameter();
param.ParameterName = "@age";
param.DbType = DbType.Int32;
param.Value = age;

cmd.Parameters.Add(param);




Et m'indiquer quels sont les librairies que je dois importer?


Merci d'avance
Commenter la réponse de Rockman52
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
29
0
Merci
C'est pourtant pas difficile...

Dim sql AsString = "SELECT * FROM utilisateurs WHERE age<=@age"
Dim param As  DbParameter = cmd.CreateParameter()
param.ParameterName = "@age"
param.DbType = DbType.Int32
param.Value = age

cmd.Parameters.Add(param);

et tu fais un import System.Data;

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
37
0
Merci
La prochaine fois:
http://tools.codes-sources.com/DotNetCodeConverter.aspx

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008
0
Merci
Merci à tous les 2 pour vos réponses mais il me dit format de la chaine d'entrée incorrecte lorsque je mets ça dans le code:

Dim cmd As OleDbCommand
        cmd New OleDbCommand("UPDATE mentions SET texte@context1 WHERE iddesc = 1", New OleDbConnection(sConnectionString))

Dim param As DbParameter = cmd.CreateParameter()
param.ParameterName = "@context1"
param.DbType = DbType.Int32
param.Value = context1
cmd.Parameters.Add(param)

Quelqu'un voit il une erreur apparente? Est-ce que cela fonctionne sur une requête Update (je ne sais pas pourquoi cela ferait une différence)?
Commenter la réponse de Rockman52
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
29
0
Merci
le DbType de texte dans ton update, ce ne serait pas un DbType.String ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate