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

JDBC Java Discussion :

Afficher données de mySQL dans un tableau d'une interface graphique (JAVA / NETBEANS)


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Afficher données de mySQL dans un tableau d'une interface graphique (JAVA / NETBEANS)
    Bonjour à tous !

    Petit problème, je dois développer un logiciel de bureau sous Java (et j'utilise Netbeans). J'ai réalisé des interfaces qui fonctionnent très bien et qui contiennent des tableaux. J'ai, en parallèle, crée une base de données mySQL contenant pour le moment une seule table mais je serai amenée à en avoir plusieurs.
    J'ai bien réussi à me connecter à ma BDD et à extraire les données. Je voudrais afficher ces données dans les tableaux de mon interface.
    Exemple : Ma table Demande contient les colonnes : Nom, Date_naissance, Appareil , etc. Et je voudrais que les différentes lignes de la table s'affichent dans un tableau du logiciel.

    Voici le code actuel pour le tableau (rempli ici manuellement donc sans passer par la BDD) :
    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
    JTable Tableau_result_attente = new JTable();
            Tableau_result_attente.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                    {"Michel", "270584", "Radiographe"},
                    {"François", "05122012", "Echographe"}
                },
                new String [] {
                    "Nom", "Date de naissance", "Appareil"
                }
            ) {
                Class[] types = new Class [] {
                    java.lang.Object.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class
                };
     
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }
            });
     
            Tableau_result_attente.setRowHeight(20);
            Tableau_result_attente.setSelectionBackground(new java.awt.Color(70, 210, 230));
            JScrollPane scroll2 = new JScrollPane(Tableau_result_attente);
            scroll2.setBounds(70,200,450,580);
            add(scroll2);

    Le code pour prélever des données de la BDD et les afficher :
    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 class TestBDD {
     
         /**
          * @param args the command line arguments
          */
         public static void main(String[] args) {
              // TODO code application logic here 
     
    Connection connexion = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("Le pilote JDBC MySQL a été chargé");
    connexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/gestion_appareils", "root","270896");
    System.out.println("Connexion à la BDD OK");
    Statement state = connexion.createStatement();
     
     
     
    // Afficher les noms présents dans la table Demande 
    ResultSet nom_animal = state.executeQuery("SELECT nom FROM Demande");
    ResultSetMetaData Resultat_nom = nom.getMetaData();
    for (int j=1;j<= Resultat_nom.getColumnCount();j++)
         System.out.print(Resultat_nom.getColumnName(j));
         System.out.println();
    while(nom.next()){
         for (int j=1; j<=Resultat_nom.getColumnCount();j++)
              System.out.print(nom.getObject(j).toString());
         System.out.println();
    }
    Merci d'avance aux personnes qui auront la solution à mon problème

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Dans ta boucle de parcours du ResultSet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(nom.next()){
         for (int j=1; j<=Resultat_nom.getColumnCount();j++)
              System.out.print(nom.getObject(j).toString());
         System.out.println();
    }
    il te suffit de collecter les données pour former des lignes à ajouter dans le modèle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    javax.swing.table.DefaultTableModel() tablemodel = new javax.swing.table.DefaultTableModel(); // on créé l'instance de modèle
     
    // exemple ajout ligne dans le modèle par tableau
    model.addRow(new Object[] { "abc", 42 });
     
    // exemple ajout ligne dans le modèle par Vector
    Vector<Object> row = new Vector<>();
    row.add("abc");
    row.add(42);
    model.addRow(row);
    Il ne te reste donc plus qu'à créer chaque ligne à ajouter à partir des données lues dans le resultset.

    En complément, tu peux regarder cette discussion.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci pour ton aide ! J'ai opté pour un vecteur, et en effet, je n'avais pas du bien chercher puisque la discussion que tu m'a indiquée correspond bien à ma recherche !
    J'ai juste un problème avec le 'readTable', voici le message d'erreur : cannot find symbol : method readTable() Donc je l'ai supprimé, j'ai cru comprende que la méthode était obsolète, et ça marche parfaitement !
    Encore merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    readTable() c'est juste la méthode spécifique de @WiZarD67, dans la discussion référencée, qui lui permet de lire les données du resultset (lui, il créé un Vector de Vector et il créé le modèle d'un coup, au lieu d'ajouter ligne à ligne).
    Je te renvoyais à cette discussion, parce qu'on y voit différents moyens de réaliser ce que tu voulais. A toi d'implémenter ta solution en fonction de ce qui te convient le mieux.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/02/2020, 14h47
  2. Réponses: 0
    Dernier message: 03/01/2018, 14h39
  3. Intégrer du JavaScript dans une interface graphique Java
    Par tamara6 dans le forum Composants
    Réponses: 2
    Dernier message: 19/04/2013, 15h39
  4. affichage d'un CV dans une interface graphique JAVA
    Par midoscofield dans le forum Documents
    Réponses: 2
    Dernier message: 11/05/2009, 15h05
  5. [MySQL] afficher des données binaires d'une table mysql dans un tableau
    Par piscop dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/06/2007, 14h48

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