Apostrophe dans requete sql [Résolu]

Signaler
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
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

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Messages postés
39
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
22 mai 2008

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

Merci,
il est vraiment qu'il faut prendre au plus tôt les bonnes habitudes afin d'éviter un max les problèmes
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
hum... VB.net ou C#... c'est pareil.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Messages postés
3
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
31 janvier 2008

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)?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]