Apostrophe dans requete sql [Résolu]

gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 déc. 2007 à 14:58 - Dernière réponse : sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention
- 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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 17 déc. 2007 à 15:15
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-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
gilletcsteph 39 Messages postés samedi 31 janvier 2004Date d'inscription 22 mai 2008 Dernière intervention - 17 déc. 2007 à 15:23
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

Merci gilletcsteph 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de gilletcsteph
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 17 déc. 2007 à 15:16
0
Merci
Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 déc. 2007 à 17:35
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
Rockman52 3 Messages postés lundi 1 mai 2006Date d'inscription 31 janvier 2008 Dernière intervention - 30 janv. 2008 à 14:45
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 30 janv. 2008 à 14:49
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
Rockman52 3 Messages postés lundi 1 mai 2006Date d'inscription 31 janvier 2008 Dernière intervention - 30 janv. 2008 à 15:31
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 30 janv. 2008 à 15:37
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 30 janv. 2008 à 20:08
0
Merci
La prochaine fois:
http://tools.codes-sources.com/DotNetCodeConverter.aspx

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Rockman52 3 Messages postés lundi 1 mai 2006Date d'inscription 31 janvier 2008 Dernière intervention - 31 janv. 2008 à 14:03
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 31 janv. 2008 à 14:08
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.