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

Développement Windows Discussion :

Méthode remplit Liste d'Objets grâce à une requête SQL


Sujet :

Développement Windows

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Méthode remplit Liste d'Objets grâce à une requête SQL
    Bonjour,

    J'aimerai avoir votre avis concernant ma méthode, qui ne semble pas fonctionner...

    Voici la méthode (dans la classe GestionClients) :

    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
    public static List<Client> AfficheClient()
            {
                var ListClient = new List<Client>();
                bdd.connection.Open();
                var cmd = new MySqlCommand("SELECT CLI_CODE, CLI_NOM, CLI_PRENOM, CLI_ADRESSE_1, CLI_ADRESSE_2, CLI_CP, CLI_VILLE, CLI_MAIL FROM CLIENT;", bdd.connection);
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        try
                        {
                            ListClient.Add(new Client
                            {
                                CLI_CODE = reader.GetString(0),
                                CLI_NOM = reader.GetString(1),
                                CLI_PRENOM = reader.GetString(2),
                                CLI_ADRESSE_1 = reader.GetString(3),
                                CLI_ADRESSE_2 = reader.GetString(4),
                                CLI_CP = reader.GetString(5),
                                CLI_VILLE = reader.GetString(6),
                                CLI_MAIL = reader.GetString(7)
                            });
     
                        }
                        catch (MySqlException e)
                        {
                            if (e.Source != null)
                                Console.WriteLine("IOException source: {0}", e.Source);
                        }
                    }
     
                }
                bdd.connection.Close();
                return ListClient;
            }
    Et voici là où je l'appel, dans la vue FenClients :

    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
    public partial class FenClients : Form
        {
            private static Bdd bdd = new Bdd();
            private static Client c;
            List<Client> Clients = new List<Client>(); 
     
            public FenClients()
            {
                InitializeComponent();
                Clients = GestionClients.AfficheClient();
                try
                {
                    CodeClientBoxText.Text = Clients.First().CLI_CODE;
                    NomClientBoxText.Text = Clients.First().CLI_NOM;
                    PrenomClientBoxText.Text = Clients.First().CLI_PRENOM;
                    Adresse1ClientBoxText.Text = Clients.First().CLI_ADRESSE_1;
                    Adresse2ClientBoxText.Text = Clients.First().CLI_ADRESSE_2;
                    CPClientBoxText.Text = Clients.First().CLI_CP;
                    VilleClientBoxText.Text = Clients.First().CLI_VILLE;
                    MailClientBoxText.Text = Clients.First().CLI_MAIL;
                }
                catch 
                {
     
                }
     
            }
    Ps : A savoir que je n'ai rien mit dans private void FenClients_Load(object sender, EventArgs e)

    Et voici la classe bdd qui peut être utile :

    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
    public class Bdd
        {
     
            public MySqlConnection connection;
     
            // Constructeur
            public Bdd()
            {
                this.InitConnexion();
            }
     
            // Méthode pour initialiser la connexion
            public void InitConnexion()
            {
                // Création de la chaîne de connexion
                string connectionString = "SERVER=127.0.0.1; DATABASE=gestion_commercial; UID=root; PASSWORD=";
                this.connection = new MySqlConnection(connectionString);
            }
     
     
        }
    Visual Studio 2015 ne m'affiche aucune erreur. Mais quand je lance l'application, les TextBox n'affiche rien. Je suppose donc que ListeClient est vide ^^

    Merci pour toute aide.

    Cordialement

  2. #2
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Citation Envoyé par KaiserNistel78 Voir le message
    Je suppose donc que ListeClient est vide ^^
    Il y a des chances, (ou pleine de vide, je n'ai pas fais le test).
    Plusieurs petites chose :
    - ListeClient ne contiendra jamais plus d'un enregistrement ? Pourquoi faire une liste alors ? => Sans parler sémantique (ListeClients), tu ne fais pas de boucle lors de la récupération des enregistrements, donc tu ne récupère que le premier (au mieux).
    - Tu vérifie bien si ta requête à retourné des enregistrements (reader.HasRows), par contre tu ne les lis pas => Il te manque un reader.Read() avant d'accéder au données du reader.
    - Évite l'utilisation de var à tout va, c'est trompeur, préfère l'utilisation du type réel si tu le connais.

    Un lien pour apprendre à utiliser les DataReader : Extraction de données à l'aide d'un DataReader avec un exemple simple de ce que tu cherche à faire.

    Pour un cas comme celui là, il faut que tu utilise le débogueur. Un point d'arrêt au début de ta méthode et tu verra tout de suite le cheminement du code ainsi que le résultat de chaque ligne.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour Kyroon,

    Je fais une liste car par la suite je veux afficher le premier client, et grâce à un bouton afficher le client suivant.
    Mais c'est bon, j'ai juste oublié le read.Read();
    Merci beaucoup, il met complètement sorti de la tête.

    Mais donc, en effet, je n'ai qu'un Client dans la liste.
    Comment puis-je récupérer les autres enregistrement ?

    Cordialement

  4. #4
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Comme dis dans mon poste précédant, il te faut une boucle.
    Regarde le premier exemple du lien que je t'ai donné, c'est exactement ce qu'il te faut.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

Discussions similaires

  1. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  2. Réponses: 7
    Dernier message: 30/05/2007, 16h17
  3. remplir ue dropdownlist grâce à une requête sql
    Par Claire07 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 28/03/2007, 12h23
  4. Récupérer grâce à une requête SQL que les champs modifiés
    Par guigui11 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/08/2006, 09h58
  5. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46

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