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

Windows Forms Discussion :

afficher une ligne précise d'une table de base de donnée MySql


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut afficher une ligne précise d'une table de base de donnée MySql
    Salut,

    Je voudrais afficher les informations concernant un patient, dont le nom et prénom sont saisie par l'utilisateur, mais je ne sais pas comment faire, svp aidez moi a résoudre ce problème:
    voici mon 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
     cnx.ConnectionString = strConn;
                    string MySQLCmd = "SELECT * FROM patient where nom =?nom and prenom =?prenom";
     
     
                    cnx.Open();
     
                    MySqlCommand cmd = new MySqlCommand(MySQLCmd);
                    cmd.Parameters.Add("?nom", textBox1.Text);
                    cmd.Parameters.Add("?prenom", textBox2.Text);
     
     
                    MyAdapter1.SelectCommand = new MySqlCommand(MySQLCmd, cnx);
                    MyAdapter1.Fill(ds1, "MyContent");
     
                    dataGridds1.DataSource = ds1.Tables["MyContent"].DefaultView;
     
     
                    cnx.Close();
                }
    et voici l'erreur qui se génère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Avertissement	1	'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, object)' est obsolète*: 'Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value)'	C:\Documents and Settings\moi\Mes documents\12janvier2009\16\11\ListeDesPatients.cs	67	17	16
    Merci infiniment.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    hello, je pense que ton erreur vient du fait que il ne voit pas ta requete avec des paramètres. tu peux essayer de filtrer dans ton datatable:
    string filter =" nom like " + tbox1.txt +"prenom like " +tbox2.txt
    foreach (DataRow dataRow in dataTable.Select(filter))
    {.....

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonsoir,

    J'ai essayé comme suit:
    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
    try
                {
                    cnx.ConnectionString = strConn;
     
                    DataTable dt = new DataTable();
                    string MySQLCmd = "SELECT * FROM patient";
     
                    cnx.Open();
                    string filter = " nom like " + textBox1.Text + "prenom like " + textBox2.Text;
     
                    foreach (DataRow dataRow in dt.Select(filter))
                    {
     
                        MyAdapter1.SelectCommand = new MySqlCommand(MySQLCmd, cnx);
     
                        MyAdapter1.Fill(ds1, "MyContent");
     
                        dataGridds1.DataSource = ds1.Tables["MyContent"].DefaultView;
                    }
     
     
                    cnx.Close();
                }
    Mais ça m'affiche l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de syntaxe: opérande manquant après l'opérateur 'Like'
    Svp aidez moi à résoudre ce problème.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par skunkies Voir le message
    hello, je pense que ton erreur vient du fait que il ne voit pas ta requete avec des paramètres. tu peux essayer de filtrer dans ton datatable:
    Ah ben non alors, pour une fois que quelqu'un se donne la peine d'utiliser des paramètres, lui dis pas de faire le contraire...

    @developppez: Continue à utiliser les paramètres, c'est une bonne pratique, contrairement aux concaténations qui rendent le code illisible et sont source d'erreur

    Le message que tu vois n'est pas une erreur mais un avertissement. Ca n'empêchera pas le programme de se compiler et de s'exécuter. C'est simplement que que cette forme de la méthode MySqlParameterCollection.Add est considérée comme obsolète, il faut donc utiliser une autre forme. Celle là par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd.Parameters.Add("?nom", MySqlDbType.VarChar).Value = textBox1.Text;
    cmd.Parameters.Add("?prenom", MySqlDbType.VarChar).Value = textBox2.Text;

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Je voudrais bien apprendre la bonne pratique et utiliser la requête paramètré mais j'y arrive pas: voici ce que j'ai eu suite à l'utilisation de la requête paramètré avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd.Parameters.Add("?nom", MySqlDbType.VarChar).Value = textBox1.Text;
                    cmd.Parameters.Add("?prenom", MySqlDbType.VarChar).Value = textBox2.Text;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le paramètre nom must be defined

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Ce serait plutot comme ca je pense:
    SqlCommand command = new SqlCommand("SELECT * FROM usr_contract WHERE ctr_ref = @contract AND ctr_exg_ref = @exg",
    connection);
    // Paramètres
    command.Parameters.Add(new SqlParameter("@contract", SqlDbType.VarChar, 5));
    command.Parameters["@contract"].Value = "FTE";
    command.Parameters.Add(new SqlParameter("@exg", SqlDbType.VarChar, 8));
    command.Parameters["@exg"].Value = "SBF";
    ATTENTION cet exemple est pour SQL SERVER pas pour MySQL.
    (exemple pris de la FAQ)

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par skunkies Voir le message
    ATTENTION cet exemple est pour SQL SERVER pas pour MySQL.
    Le caractère utilisé pour indiquer les paramètres varie selon les SGBD. Mais il me semble que pour MySQL c'est effectivement "@" et non "?"...

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    @Tomlev: C'etait plus pour lui dire de faire attention au type d'oblet dans l'exemple :
    SqlCommand et SqlParameter

  9. #9
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Euh, l'avertissement du compilo dit quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Avertissement	1 ...	'Add(String parameterName, Object value) has been deprecated.
    Use AddWithValue(String parameterName, Object value)' ...
    A savoir que cette surcharge de la méthode "Add" a été renommée "AddWithValue". Remplace tous tes Add(string, object) par des AddWithValue(string, object), et c'est tout

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    arf, j'avais même pas lu l'avertissement jusqu'au bout...

  11. #11
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Salut,

    c'est vrai pour MySql, c'est le "@" et non le "?" qui doit être utilisé pour les requêtes paramétrées.
    J'ai essayé comme me l'avez indiqué Skunkies, il n'y a plus d'erreur, mais ça affiche une ligne vide.
    voici le 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
     //VISUALISER UN PATIENT DONT LE NOM ET LE PRENOM CORRESPONDENT AU NOM ET PRENOM DONNEES
                try
                {
                    cnx.ConnectionString = strConn;
                    string MySQLCmd = "SELECT * FROM patient where nom =@nom and prenom =@prenom";
     
                    cnx.Open();
                    MessageBox.Show("Connection réussie");
                    MySqlCommand cmd = new MySqlCommand(MySQLCmd);
                    cmd.Parameters.Add(new MySqlParameter("@nom", MySqlDbType.VarChar, 45));
                    cmd.Parameters["@nom"].Value = textBox1.Text;
                    cmd.Parameters.Add(new MySqlParameter("@prenom", MySqlDbType.VarChar, 45));
                    cmd.Parameters["@prenom"].Value = textBox2.Text;
     
                    MyAdapter1.SelectCommand = new MySqlCommand(MySQLCmd, cnx);
     
                    MyAdapter1.Fill(ds1, "MyContent");
     
                    dataGridds1.DataSource = ds1.Tables["MyContent"].DefaultView;
     
     
                    cnx.Close();
                }
    En ce qui concerne le remplacement de Add par AddWithValue, je l'ai fait, et la même chose ça affiche une table contenant une ligne vide, pourquoi, je ne sais pas, est ce que vous pouvez m'aider svp?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Vérifie le résultat de MyAdapter1.Fill, c'est le nombre de lignes récupérées par la requête

    Tu as bien défini les colonnes dans dataGridds1 ? En indiquant pour chacune quelle colonne du DataSet afficher ?

    Au fait, c'est un DataGrid ou un DataGridView ? DataGrid est obsolète, tu devrais utiliser DataGridView (sauf si tu es en .NET 1.1...)

  13. #13
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Je ne sais pas comment faire, pour vérifier le résultat de MyAdapter1.Fill, ni comment définir les colonnes dans mon datagrid, en indiquant pour chacune quelle colonne du dataset affiché, est ce que vous pouvez, svp me dire comment pourrais je le faire ou me donner un lien de tuto concernant ce sujet?

    Merci infiniment

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    Question bete: as tu testé la meme requete dans mySQL?
    Est ce que tu as un enregistrement qui correspond??

  15. #15
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Oui bien sure que la ligne existe, et je vient de la tester sous MySql.

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par developppez Voir le message
    Je ne sais pas comment faire, pour vérifier le résultat de MyAdapter1.Fill
    Quand je dis le résultat, je veux parler de la valeur de retour...

    Citation Envoyé par developppez Voir le message
    ni comment définir les colonnes dans mon datagrid
    Tu peux faire ça dans le designer. Pour un DataGrid je sais pas comment on fait exactement, j'utilise toujours un DataGridView

  17. #17
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Et comment on fait pour afficher le résultat dans un datagridview?

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Pareil, avec la propriété DataSource
    Et on définit les colonnes dans le designer

  19. #19
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut

    Ça devrai marcher avec ça :

    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
     
    // avant tu peux vérifier si les textBox ne sont pas vides ...
    try
    {
           cnx.ConnectionString = strConn;
           DataSet ds1 = new DataSet("MyContent");
           string MySQLCmd = "SELECT * FROM patient where nom =?nom and  prenom =?prenom";
           MySqlDataAdapter MyAdapter1 = new MySqlDataAdapter();
     
           cnx.Open();
     
            MySqlCommand cmd = new MySqlCommand(MySQLCmd,cnx);
     
     
             cmd.Parameters.Add("?nom", MySqlDbType.VarChar).Value = textBox1.Text;
             cmd.Parameters.Add("?prenom", MySqlDbType.VarChar).Value = textBox2.Text;
             MyAdapter1.SelectCommand = cmd;
             MyAdapter1.Fill(ds1, "MyContent");
             dataGridds1.DataSource = ds1.Tables["MyContent"].DefaultView;
             cnx.Close();
    }
    catch (Exception ex)
    {
            MessageBox.Show("Problème" + ex.Message);
    }
    Bonne chance

  20. #20
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Salut,

    Merci beaucoup BobMidou, ça marche.

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

Discussions similaires

  1. Extraire une ligne précise dans une page Word
    Par jérémyp8 dans le forum VBA Word
    Réponses: 5
    Dernier message: 30/05/2013, 09h45
  2. Modifier une ligne précise dans une richTextBox
    Par diabli73 dans le forum C#
    Réponses: 3
    Dernier message: 28/07/2009, 13h05
  3. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  4. Une macro à faire sur une ligne précise
    Par JPDU92 dans le forum VBA Word
    Réponses: 5
    Dernier message: 31/01/2008, 12h13
  5. Selectionner une ligne précise dans une combobox
    Par psykoleouf dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/05/2007, 13h04

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