Affichage des éléments dans une jtable [Résolu]

Signaler
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012
-
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012
-
bjr tout le monde.j'ai une jtable ou j'affiche la liste des clients de ma base de donnée à partir du bouton afficher.mais a chaque fois que je clique sur afficher au lieu qu'il actualise ma jtable mais enregistrements se double.c'est à dire que les meme enregistrements s'affichent plusieurs fois.voici mon code:
public void chargerTable(){
     Connection cnx=null;
        Statement st=null;
        ResultSet rs = null;
        String exo=null;
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/location";
            cnx=DriverManager.getConnection(url,"root","pascalineclaver");
            st=cnx.createStatement();
            String rq="select * from client";
            rs= st.executeQuery(rq);
            //JOptionPane.showMessageDialog(null,"compte enrégistré");
            rs.last();
            int nb=rs.getRow();
            rs.beforeFirst();
            while(rs.next())
            {
                if(nb>0)
                {
             ((DefaultTableModel) jTable1.getModel()).addRow(new Object[]{null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null});
              int nbligne= jTable1.getRowCount();

              //jTable1.setValueAt(rs.getString("id_client"),nbligne-1,0);
             // 
                jTable1.setValueAt(rs.getString("civilite"),nbligne-1,0);
              jTable1.setValueAt(rs.getString("nom_client"),nbligne-1,1);
              jTable1.setValueAt(rs.getString("prenom_client"),nbligne-1,2);
              jTable1.setValueAt(rs.getString("adresse_client"),nbligne-1,3);
              jTable1.setValueAt(rs.getString("ville_client"),nbligne-1,4);
              jTable1.setValueAt(rs.getString("telephone_client"),nbligne-1,5);
              jTable1.setValueAt(rs.getString("email_client"),nbligne-1,6);
              jTable1.setValueAt(rs.getString("datnais_client"),nbligne-1,7);
              jTable1.setValueAt(rs.getString("lieunais"),nbligne-1,8);
              jTable1.setValueAt(rs.getString("datlivraisonpermis_client"),nbligne-1,9);
              jTable1.setValueAt(rs.getString("numpermis_client"),nbligne-1,10);
              //
               jTable1.setValueAt(rs.getString("lieulivraisonpermis_client"),nbligne-1,11);
              jTable1.setValueAt(rs.getString("numcnib"),nbligne-1,12);
               jTable1.setValueAt(rs.getString("datetablissementcnib"),nbligne-1,13);
              jTable1.setValueAt(rs.getString("lieuetablissementcnib"),nbligne-1,14);
            
              
              jTable1.setValueAt(rs.getString("Societe"),nbligne-1,15);
              jTable1.setValueAt(rs.getString("id_client"),nbligne-1,16);
               
             
             
                 }
                 else
                {
                JOptionPane.showMessageDialog(null,"Aucun enregistrement trouvé");
               this.setVisible(true);
                 }

                        }
        }
        catch(ClassNotFoundException e)
        {
            JOptionPane.showMessageDialog(null,"Mauvais Driver","Erreur", JOptionPane.ERROR_MESSAGE);

        }
        catch(SQLException xx)
        {
            JOptionPane.showMessageDialog(null,"Echec enregistrement!! Veuillez vérifier toute les zonee de texte", "Erreur",JOptionPane.ERROR_MESSAGE);

        }
        finally
        {
            if (st!=null)
            {
                try
                {
                    st.close();
                }
                catch(SQLException e1)
                {
                    e1.printStackTrace();
                }
            }

            if (cnx!=null)

            {
                try
                {
                    cnx.close();
                }
                catch(SQLException e2)
                {
                    e2.printStackTrace();
                }

        }
    }
        
}
private void cmdafficherActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        chargerTable();
}                                           
    


aidez moi

8 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
Ou plutôt, tu ne l'ajoutes jamais au modèle.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
Salut,

Normal, tu né réinitialises jamais le modele.
Commences par faire un jTable1.setTableModel(new DefaultTableModel()); et ca marchera.
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

merci mais je dois placer ça à quel endroit de mon code?
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
 try
        {
            jTable1.setTableModel(new DefaultTableModel());
            Class.forName("com.mysql.jdbc.Driver");
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
Et à la fin :

              jTable1.setValueAt(rs.getString("Societe"),nbligne-1,15);
              jTable1.setValueAt(rs.getString("id_client"),nbligne-1,16);
              jTable1.repaint();
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

merci c'est gentil.est ce qu'on peut rendre une colonne d'une jtable invisible?
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
Tu la supprime du modèle...
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

merci beaucoup julien39