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 :

Formater un textbox multiligne pour insert


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Par défaut Formater un textbox multiligne pour insert
    Bonjour,

    Je rencontre actuellement un probleme pour mon insert dans ma base Mysql. En fait, j'ai un textbox multiligne, qui me sert à rentrer une description, lorsque je souhaite l’insérer j'ai une exception qui dit que j'ai un problème de syntaxe. alors que si je mais un mot l'insert marche nickel.

    Je pense que j'ai un problème de formatage du texte, celui-ci peu prendre des caractère comme "m²" puis des sauts de lignes..

    Voici un texte que je souhaiterai enregistrer (chut faut pas dire, mais je trouve l'inspiration sur le bon coin, bah quoi faut bien faire des tests comme si c'était pour de vraie ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pour les inconditionnels du calme et de la nature, aux portes du diois et de la Drôme Provençale, superbe terrain à bâtir composé d'une surface plane de 1264 m² constructibles et d'un coteau boisé de 3190 m². Viabilités en bordure. 
     
    Quartier très calme, sans vis à vis, à 2 minutes du centre-village.
    terrain libre de constructeur
    Seulement quand je clique sur ajouter j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Une exception non gérée du type 'MySql.Data.MySqlClient.MySqlException' s'est produite dans MySql.Data.dll
     
    Informations supplémentaires*: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'une surface plane de 1264 m² constructibles et d'un coteau boisé de 3190 m². ' at line 1
    Voici ma méthode d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            // Methode ajout bien
            public void bienAdd()
            {
                string query = "INSERT INTO bien ( titre, id_type, abris, stationement, nb_sdb, nb_wc, nb_piece, prix, hauteur_plafond, superficie, description, adress, num_agence, num_departement, nom_ville, num_proprietaire, id_demande) VALUES('" + this.titre + "','" + this.type + "','" + this.abris + "','" + this.stat + "','" + this.sdb + "','" + this.wc + "','" + this.piece + "','" + this.prix + "','" + this.hauteurp + "','" + this.superficie + "','" + this.description + "','" + this.adress + "','" + this.agence + "','" + this.departement + "','" + this.ville + "','" + this.proprio + "','" + this.demande + "')";
                DBConnect cnx = new DBConnect();
                cnx.InsertBien(query);
                MessageBox.Show("Ajouté");            
            }
    Et je récupère mon textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    description = add_bien_txtbox_descr.Text;
    Avez-vous une idée ? Vous qui m'avait sauvé (je ne compte même plus le nombre de fois )

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En voyant ton insert je pense tout de suite à un truc très classique : l'une de tes valeurs à insérer ne contiendrait-elle pas un ou plusieurs caractères quotes?
    Dans le cas des chaînes de caractères il faut bien penser à les doubler...

    [EDIT]
    Ah, je n'avais pas regardé l'erreur jusqu'au bout, et je confirme, c'est bien cela!

  3. #3
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    667
    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 : 667
    Par défaut
    Bonjour,

    c'est la description qui pose problème car il y a des ' dans ta textbox.Ce qui fait que ton Insert ne va prendre qu'un morceau :

    Pour les inconditionnels du calme et de la nature, aux portes du diois et de la Drôme Provençale, superbe terrain à bâtir composé d'une surface plane de 1264 m² constructibles et d'un coteau boisé de 3190 m². Viabilités en bordure.

    Quartier très calme, sans vis à vis, à 2 minutes du centre-village.
    terrain libre de constructeur
    Du coup , le reste n'est plus considéré comme un string et MySQL ne sait pas trop ce que ça veut dire.

    Donc il faudrait que tu utilises des " et non des ' dans ta requête , comme ça les ' seront traité comme un caractère et non la fin de la valeur.

    Pour utiliser des " sans problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string str = "ceci est une \"quote\" ";

  4. #4
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Par défaut
    Euh... Alors déjà vous êtes trop rapide, et ensuite vous répondez juste... M'en fiche je boude ( faut bien râler quand même )

    En tout cas merci beaucoup !!!!

    Petite question : je peux faire ca sur tout mon insert tant qu'a faire ?

    Je vous remercie grandement pour votre participation, et votre dévouement avec vos réponses et leurs explications.. Grace à vous j'ai d'une part des connaissances en c# et d'autre part fini tout mes programmes pour mes épreuves de BTS..

    Donc en un mot Merci...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Petite astuce : tu peux remplacer tous les endroits où il y a des chaînes de caractères par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monText.Replace("'","''")
    Exemple avec ton code (je n'en met que certains pour lesquels je suis sûr qu'il s'agit de chaines de caractères, à toi de mettre ceux qui manquent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Methode ajout bien
            public void bienAdd()
            {
                string query = "INSERT INTO bien ( titre, id_type, abris, stationement, nb_sdb, nb_wc, nb_piece, prix, hauteur_plafond, superficie, description, adress, num_agence, num_departement, nom_ville, num_proprietaire, id_demande) VALUES('" + this.titre.Replace("'","''") + "','" + this.type + "','" + this.abris + "','" + this.stat + "','" + this.sdb + "','" + this.wc + "','" + this.piece + "','" + this.prix + "','" + this.hauteurp + "','" + this.superficie + "','" + this.description.Replace("'","''") + "','" + this.adress.Replace("'","''") + "','" + this.agence + "','" + this.departement + "','" + this.ville.Replace("'","''") + "','" + this.proprio + "','" + this.demande + "')";
                DBConnect cnx = new DBConnect();
                cnx.InsertBien(query);
                MessageBox.Show("Ajouté");            
            }
    Bien noter aussi que ça va lancer une exception si la valeur devant le replace vaut null. Pour rappel en c# "null" et "chaîne vide" sont différents pour une chaîne de caractères.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Il est fortement recommandé d'utiliser les requêtes paramètrées.
    Voir Tuto.

    Cela résoudra tout les problèmes de cote (') et d'autres.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Par défaut
    Dac Merci beaucoup,
    Je me plonge demain dans le tuto

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

Discussions similaires

  1. [XL-2010] Fonction pour formater une Textbox (Date)
    Par JapethTheGoat dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 19/03/2015, 15h09
  2. Problème format de champs pour insertion dans une base FileMaker
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2007, 22h27
  3. Réponses: 9
    Dernier message: 30/06/2004, 23h19
  4. [TP]Help pour insertion d'un image sur tp7 svp !
    Par ilym dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/01/2004, 21h00
  5. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    Réponses: 4
    Dernier message: 12/06/2002, 11h57

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