Pb d'appostrophes dans textbox [Résolu]

Signaler
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,


Grace à un post du Coq,
j'ai appris qu'on devait doubler les appostrophes dans les libellés de
champs qui contiennent des appostrophes afin de ne pas avoir d'erreur
de syntaxe dans les requêtes SQL.


(exemple: SELECT id_ville FROM villes WHERE nom_ville LIKE 'l''argentière';)


Donc toutes les
textbox que mon appli utilise pour construire des requêtes devront
tenir compte de ce souci dans leur propriété Text.



Voilà je ne sais
pas comment faire pour mettre ça en place... Dois-je utiliser
l'héritage ? Dois-je surcharger la propriété Text ? Comment ?



Fiou, je n'avais pas vu venir ce problème d'appostrophes...

8 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
public class Matb : TextBox
{
public Matb(){}
public String SqlText
{
get { return this.Text.Replace("'", "''");}
}
}

Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Tu peux tout simplement doubler ton apostrophe lors de la construction de ta requete

Mx
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Oui sinon l'override de la propriété Text ça peut être pratique si ton TextBox sera forcément dédié à cette tâche.

public override string Text
{
get
{
return base.Text.Replace("'", "''");
}
set
{
base.Text = value.Replace("''", "'");
}
}

Au pire ajoute une propriété "SqlText" au lieu d'overrider "Text".

Mais tu devrais plutôt passer par l'utilisation des SqlParameter, qui si je ne me trompe pas se chargent de ce genre de travail ?

/*
coq
MVP Visual C#
*/
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Ok, un peu comme ça ?



string mysqlcommandstring = "SELECT id_ville FROM villes
< WHERE nom_ville LIKE " + dblquote(tb_ville.Text) + ";"
;



....



private string dblquote(string libelle)

{

... code qui double les appostrophes à libelle ...



return libelle;

}
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Oops, j'avais posté avant le tien coq :-/ désolé



Je vais vérifier pour les SqlParameters et je vous tiens au courant.
Sinon la solution de rajouter une propriété sqltext me plairait bien à
défaut. Merci à vous pour votre aide
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Bon ben, je me suis tapé toute la msdn sur sqlparameters, mais je n'ai
pas trouvé ce qui pourrait corriger mon souci. Donc je vais suivre ton
conseil Le coq, c'est à dire rajouter une propriété SqlText à mon
textbox. Mais ce que j'aimerais bien faire, c'est utiliser l'héritage
pour que chaque TextBox utilisée dans mon appli de bdd possède cette
propriété SqlText...



J'arrive pas trop à voir comment y faut faire pour ça, mais je cherche...
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Cool, je m'attendais à un truc tout compliqué ! Merci beaucoup à vous tous !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
lol, on cherche toujours trop compliqué avant de penser aux choses simples.

/*
coq
MVP Visual C#
*/