IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

l'Apostrophe dans MYSQL [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut l'Apostrophe dans MYSQL
    Bonjour

    je suis sur visual studio 2013 pour le poste client avec un windows 8.1 et pour le serveur linux avec base de données mysql avec phpmyadmin.
    Et je suis toujours un débutant.

    j'ai un problème dans mon projets j'ai une textbox multilignes que j'utilise pour des commentaires.

    Quand j’écris un texte par exemple je mappelle fred tous va bien ça enregistre bien dans la base de données mais si je rajoute un apostrophe je m'appelle fred il me donne ce message d'erreur

    Nom : Capture.PNG
Affichages : 574
Taille : 7,4 Ko

    Bref la base de données ne sait pas interpréter nos apostrophe la ligne et en type text et interclassement en utf8_general_ci.

    En vous remerciant pour vos solutions

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 641
    Points : 2 154
    Points
    2 154
    Par défaut
    Bonjour,

    c'est normal un ' coupe ta requête en deux. Tu as deux solutions , la rapide et la bonne :

    La rapide:

    Faire un Replace() sur la valeur de ta TextBox quand tu la recupères, du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string commentaire = textBox.Replace("'","''");
    //ou
    string commentaire = textBox.Replace("'","/'");
    La bonne :

    Utiliser des requêtes paramétrées. Tu devras surement revoir un peu ton code mais c'est le meilleur moyen de s'assurer que tout va bien et d'éviter les problèmes.

    Petit exemple

    Règle n°1 en SQL : Toujours se méfier de ce que l'utilisateur peut rentrer comme valeur.

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Les séquences d'échappement sont à éviter : le standard SQL prévoit '' (deux quotes) pour échapper une quote, mais MySQL ainsi qu'Oracle supportent aussi \\' (antislash quote). Je découvre /' (slash quote).

    Le problème, c'est qu'on peut rapidement préférer une notation non standard SQL (\\' ou /'), la jugeant plus rapide, et plus standard (échappement ANSI).

    Et ça va très bien marcher jusqu'au jour où :
    - l'application va être migrée pour un autre SGBD qui ne supporte que l'échappement standard, ou même un autre (pourquoi pas @#@ ?)
    - MySQL va se décider à suivre les standard, et abandonnée les séquences d'échappement ANSI-like.
    - un petit malin va combiner des '', /' et autres \\' dans la chaîne de caractère, obligeant MySQL à foirer lamentablement le décodage de la séquence d'échappement

    Enfin, pour des raisons de performances évidentes (pooling, plan d'exécution, etc.) il n'y a aucune alternative possible au requête paramétrées.
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Bonjour

    Merci pour l'astuce cela fonctionne très bien.
    voici le code que j’emploie pour ceux que ça intéresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Nom = '" + this.textBox2.Text.Replace("'", "''") + "',Prenom = '" + this.textBox3.Text.Replace("'", "''") + "';";
    a bietot

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Code qui est donc l'exemple de ce qu'il ne faut absolument pas faire.
    On ne jouit bien que de ce qu’on partage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Apostrophe dans mySQL
    Par Mvu dans le forum ASP
    Réponses: 2
    Dernier message: 22/02/2012, 17h14
  2. [MySQL] problème mysql : apostrophe dans une requête
    Par stars333 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/03/2010, 10h18
  3. Insertion de l'apostrophe dans la base MySQL
    Par tania.du dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2009, 16h41
  4. [MySQL] pb apostrophe dans texte à enregistrer dans base mysql
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/09/2006, 15h50
  5. insérer un apostrophe dans MySQL
    Par levraigreg dans le forum Débuter
    Réponses: 9
    Dernier message: 09/02/2006, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo