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 :

Erreur Lecture base de donnée


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut Erreur Lecture base de donnée
    Bonjour a tous,
    je travaille actuellement sur une application connecté a la base de donnée MySQL que j'ai mis en place.
    Mon application dispose d'un datagrid et quand je clique sur une ligne de ce tableau il m'ouvre dans une fenetre les données.

    Voila j'ai un probleme... Parfois il m'ouvre les données dans la nouvelle fenetre alors que parfois non il me met ce message d'erreur :

    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 '................................'' at line 1
    J'ai cherché sur le net mais je ne trouve pas asser d'information.

    Mon application est en codé en C# WPF

    voici mon code pour la lecture des données dans la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public Saisie ( FAQ.MyData data)    
            {
                InitializeComponent();
     
                // Instancier l’objet Command
                        using (MySqlCommand wCommand = Home.wConnexion.CreateCommand())
                         {
                            // Définition de la requête
                            wCommand.CommandText = "SELECT * FROM faq_t WHERE erreur ='" + data.erreur + "'";
     
                            // Lecture des résultats
                            using (MySqlDataReader  wReader = wCommand.ExecuteReader())
                            {
                                // Remplir le textbox
                                while (wReader.Read())
                                {
     
                                    string wItem = wReader["erreur"].ToString();
                                    string wItems = wReader["descriptif"].ToString();
                                    string wItem1 = wReader["type"].ToString();
     
     
                                    textBox1.Text = (wItem);
                                    textBox2.Text = (wItems);
                                    comboBox1.Text = (wItem1);
                                }
                            }
                        }
                    }
    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Salut,

    As-tu récupéré la valeur de ton wCommand.CommandText pour voir quelle est ta requête ? Il y a des chances qu'il y ait une simple quote dedans.

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Première recommandation: utiliser les requêtes parametrées!

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut
    Non je n'ai pas récupéré la valeur je ne sais pas le faire.
    C'est quoi les requêtes parametrées ?

  5. #5
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Par requêtes paramétrées, Nathanael voulait dire procédures stockées. Il y à plein d'exemple disponibles sur la toile à ce sujet.

    Par ailleurs, quand je disais "récupérer la valeur", il faut que tu lances ton programme en mode pas-a-pas et que tu mettes un point d'arrêt sur wCommand.CommandText pour voir ce qu'il récupère.

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Citation Envoyé par Jean-Michel Ormes Voir le message
    Par requêtes paramétrées, Nathanael voulait dire procédures stockées.)
    Nan ! RAV
    Il y a plein de docs sur les req paramétrées.
    En les utilisant, on se contrefout de la transformation des string, des dates etc....

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    tu as un exemple ici

    http://www.thaicreate.com/asp.net/c-...ter-query.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String QueryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?p1";
    MySqlCommand Cmd = new MySqlCommand(QueryString, Connection);
    Cmd.Parameters.Add("?p1", MySqlDbType.VarChar, 3).Value = "a";

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut
    youtpout978 Les requêtes paramétrées devraient arranger mes problèmes?
    Par ce que je trouve bizarre que sa marche avec certain ligne dans le tableau d'autre ligne non

  9. #9
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Nan ! RAV
    Il y a plein de docs sur les req paramétrées.
    En les utilisant, on se contrefout de la transformation des string, des dates etc....
    En effet méa culpa, j devais pas être bien réveillé moi

    Citation Envoyé par moonshine972 Voir le message
    youtpout978 Les requêtes paramétrées devraient arranger mes problèmes?
    Par ce que je trouve bizarre que sa marche avec certain ligne dans le tableau d'autre ligne non
    Oui ce sera mieux et tu perds rien à essayer. C'est une solution déjà un peu plus propre

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut
    Voila mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     public Afficher(FAQ.MyData data)
            {
                InitializeComponent();
     
               MySqlDataReader  wReader = null;
     
                int idTable = 12;
     
                // Instancier l’objet Command
     
     
                    MySqlCommand cmd = new MySqlCommand ( "SELECT * FROM faq WHERE erreur = '" + data.erreur + "'", Home.wConnexion );
     
                    MySqlParameter _param = new MySqlParameter();
                    _param.ParameterName = "'" + data.erreur + "'";
                    _param.Value = idTable;
     
                    // Lecture des résultats
     
                    cmd.Parameters.Add(_param);
                    wReader = cmd.ExecuteReader();
     
                    // Remplir le textbox
     
                    while (wReader.Read())
                        {
     
                            string wItem = wReader["erreur"].ToString();
                            string wItems = wReader["descriptif"].ToString();
                            string wItem1 = wReader["type"].ToString();
     
                            textBox1.Text = (wItem);
                            textBox2.Text = (wItems);
                            comboBox1.Text = (wItem1);
                        }
                    }
    j'obtiens le message d'erreur suivant :

    There is already an open DataReader associated with this Connection which must be closed first.
    J'ai parfois celui la

    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 'hors de l'impression de l'agenda'' at line 1
    Pourquoi ca ne marche toujours pas? Peut ètre que sa vient de ma base mysql?
    j'ai certaine ligne dans mon application qui fonctionne et d'autre ou jai ce message derreur

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Merci de lire correctement l'exemple qui a été donné par youtpout978

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut
    Nathanael Marchand mon code n'est pas bon?

  13. #13
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Citation Envoyé par moonshine972 Voir le message
    Nathanael Marchand mon code n'est pas bon?
    Tu trouves que ça ressemble à l'exemple donné précédemment ?

    Plus sérieusement, va voir l'exemple, essaye de le comprendre et de l'adapter à ta requête.

  14. #14
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par moonshine972 Voir le message
    Nathanael Marchand mon code n'est pas bon?
    De loin, dans le brouillard, la nuit et de dos peut-être que ca peut vaguement ressembler
    Mais sinon, non! L'interet d'utiliser les requêtes parametrées c'est de ne pas faire de concaténation des valeurs qui peuvent comporter des caractères spéciaux et permettre des injections SQL. Il faut donc qu'il n'y ait plus de concaténation dans ta commande.

Discussions similaires

  1. erreur de base de données
    Par paolo2002 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 06/06/2007, 11h43
  2. erreur acces base de donnée.
    Par Phiss dans le forum ASP
    Réponses: 8
    Dernier message: 08/11/2006, 10h49
  3. erreur connexion base de données access
    Par Adren dans le forum ASP
    Réponses: 17
    Dernier message: 22/06/2006, 08h34
  4. lecture base de donnée avec vc++ 2005
    Par k_boy dans le forum MFC
    Réponses: 13
    Dernier message: 21/04/2006, 11h48
  5. Réponses: 2
    Dernier message: 19/06/2003, 21h58

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