Récupérer enregistrement dans ArrayList [Résolu]

Signaler
-
 Galactica -
Bonjour,

j'ai un soucis avec netbeans , j"utilise la version 8.2 avec le jdk 1.8

mon problème est le suivant:

je n"arrive pas a récupérer les enregistrements de mon arrayList hors de la méthode dans laquelle les données sont ajoutés

quelqu’un pourrait il m'aider ?

ci dessous le code



package entite;

//piur la connection a la BD
import controle.connection.ControleConnexion;
import java.sql.Connection;

//pour les requete sql
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//pour la structure d'acceuil des données
import java.util.ArrayList;
//pour la gestion des propriété Date
import java.util.Date;
//pour les boite de dialogue
import javax.swing.JOptionPane;




public class Client extends Personne{
    //PRORIETE
    //proprieté de base de la classe
    
    private boolean carte_fidele;
    private Date date_creation;
    static Client bb =new Client();
    //proprieté de la classe
    //-----------------------
    
    private static Connection laConnexion = 
            ControleConnexion.getLaConnectionStatique();
    
    //proriété de type arrayliste qui contient les enregistrements
    
    private final static ArrayList <Client> lesEnreg = new ArrayList<>();
    
    
    
    //GETTERS de base
    //--------------

    public String getCode(){
        return code;
    }

    public String getNom(){
        return nom;
    }

    public String getPrenom(){
        return prenom;
    }
    
     public boolean isCarte_fidele(){
        return carte_fidele;
    }

    public Date getDate_creation(){
        return date_creation;
    }
    //getters pour transmettre l'arraylist
    //------------------------------------
    
    public ArrayList<Client> getLesEnreg(){
        return lesEnreg;
    }
    //Setters********************************

    public void setCode(String code) {
        this.code = code;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }
    
    public void setCarte_fidele(boolean carte_fidele) {
        this.carte_fidele = carte_fidele;
    }

    public void setDate(Date date) {
        this.date_creation = date;
    }
  
    
    
      
  //CONSTRUCTEURS
  //----------------
  //1er CONSTRUCTEUR
  //----------------
    
    public Client(String vCode,String vNom,String vPrenom,boolean vCarteFidele,Date vDateCreation){
        super(vCode,vNom,vPrenom);
        this.code= vCode;
        this.nom = vNom;
        this.prenom=vPrenom;
        carte_fidele = vCarteFidele;
        date_creation=vDateCreation;
           
    }
    
    
     //2eme CONSTRUCTEUR
        //-------------------
        public Client(String vCode){
            super(vCode);
            this.code = vCode;
            
        }
      //3eme CONSTRUCTEUR
      //----------------------
        
        public Client(){
        }
        
      //4eme CONSTRUCTEUR
      //------------------------
        
        public Client(String vNom, String vPrenom){
            nom= vNom;
            prenom = vPrenom;
        }
    
    
        
        public static void lireRecupCRUD(){
            try {
                
                
                Statement state = laConnexion.createStatement();
                ResultSet rs = state.executeQuery("SELECT * FROM clients ORDER BY nom");
                while (rs.next()){
                     
                    String codeJ = rs.getString("code");
                    String nomJ = rs.getString("nom");
                    String prenomJ = rs.getString("prenom");
                    boolean carte_fideleJ = rs.getBoolean("carte_fidele");
                    Date date_creation = rs.getDate("date");
                    
                   lesEnreg.add(new Client(codeJ, nomJ, prenomJ, carte_fideleJ, date_creation));
                       System.out.println(lesEnreg.size());
                  
                }
                
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null,"PROBLEME RENCONTRE : "+ e.getMessage(), "resultat",
                        JOptionPane.ERROR_MESSAGE);
            }
        }
        
        
           public static void main(String [] args) {
               
               Client test = new Client();
               System.out.println(test.getLesEnreg().isEmpty());
           }
            
    
}




Configuration: Windows / Chrome 81.0.4044.92

2 réponses

Messages postés
16335
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 mai 2021
2 829
Bonjour,

Il faut que tu sépares ton code en deux : l'entité d'une part, le DAO d'autre part.
De plus, il faut éviter autant que possibles les variables static, si c'est mal maîtrisé comme ici, cela peut rapidement faire n'importe quoi.

Voici une correction possible. À noter que les attributs code, nom et prenom étant hérités de la classe Personne, les méthodes get/set correspondant devraient aussi en être hérités.

package entite;

//pour la gestion des propriétés Date
import java.util.Date;

public class Client extends Personne {
    private boolean carteFidelite;
    private Date dateCreation;

    public Client(){
        super();
    }

    public Client(String vCode) {
        super(vCode);
    }

    public Client(String vCode, String vNom, String vPrenom) {
        super(vCode, vNom, vPrenom);
    }

    public Client(String vCode, String vNom, String vPrenom, boolean vCarteFidele, Date vDateCreation) {
        super(vCode, vNom, vPrenom);
        carteFidelite = vCarteFidele;
        dateCreation = vDateCreation;
    }

    public Date getDateCreation(){
        return dateCreation;
    }

    public void setDateCreation(Date dateCreation) {
        this.dateCreation = dateCreation;
    }

    public boolean getCarteFidelite(){
        return carteFidelite;
    }

    public void setCarteFidelite(boolean carteFidelite) {
        this.carteFidelite = carteFidelite;
    }

    @Override
    public String toString(){
        return super.toString() + " Client [carteFidelite=" + carteFidelite + ", dateCreation=" + dateCreation + "]";
    }
}

package dao;

import entite.Client;
//pour les requêtes sql
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//pour la structure d'accueil des données
import java.util.ArrayList;
import java.util.List;
//pour la gestion des propriétés Date
import java.util.Date;
//pour les boîtes de dialogue
import javax.swing.JOptionPane;
//pour la connexion à la BD
import controle.connection.ControleConnexion;

public class ClientDao {

    public static List<Client> getAllClientsOrderByNom(){
        List<Client> result = new ArrayList<>();
        try (Connection conn = ControleConnexion.getLaConnectionStatique();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM clients ORDER BY nom")) {
            while (rs.next()) {
                result.add(getClient(rs));
            }
            System.out.println(result.size());
        } catch (RuntimeException | SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "PROBLEME RENCONTRE : " + e.getMessage(), "resultat", JOptionPane.ERROR_MESSAGE);
        }
        return result;
    }

    private static Client getClient(ResultSet rs) throws SQLException {
        String code = rs.getString("code");
        String nom = rs.getString("nom");
        String prenom = rs.getString("prenom");
        boolean carteFidelite = rs.getBoolean("carte_fidele");
        Date dateCreation = rs.getDate("date");
        return new Client(code, nom, prenom, carteFidelite, dateCreation);
    }

    public static void main(String[] args) {
        System.out.println(ClientDao.getAllClientsOrderByNom());
    }
}
merci beaucoup pour votre aide le problème est résolu