Apostrophe dans requete sql

Résolu
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 17 déc. 2007 à 14:58
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre 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';'.

11 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 déc. 2007 à 15:15
3
gilletcsteph Messages postés 39 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 mai 2008
17 déc. 2007 à 15:23
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
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
17 déc. 2007 à 15:16
Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
17 déc. 2007 à 17:35
Merci,
il est vraiment qu'il faut prendre au plus tôt les bonnes habitudes afin d'éviter un max les problèmes
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Rockman52 Messages postés 3 Date d'inscription lundi 1 mai 2006 Statut Membre Dernière intervention 31 janvier 2008
30 janv. 2008 à 14:45
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
30 janv. 2008 à 14:49
hum... VB.net ou C#... c'est pareil.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Rockman52 Messages postés 3 Date d'inscription lundi 1 mai 2006 Statut Membre Dernière intervention 31 janvier 2008
30 janv. 2008 à 15:31
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
30 janv. 2008 à 15:37
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]
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
30 janv. 2008 à 20:08
0
Rockman52 Messages postés 3 Date d'inscription lundi 1 mai 2006 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 14:03
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)?
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2008 à 14:08
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]
0
Rejoignez-nous