Ma liste retourne un élément seulement

Fermé
deep_sea Messages postés 201 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 10 décembre 2022 - Modifié le 20 févr. 2020 à 11:13
deep_sea Messages postés 201 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 10 décembre 2022 - 20 févr. 2020 à 13:46
Bonjour ,
j'ai développé une fonction recup_let qui récupère des données a partir de la base de donnée et j'ai les stockés dans un ArrayList pour les copies ensuite dans un fichier txt
Mon problème le fichier génère mais avec une ligne seulement.

détails ..
au début j'ai créer une classe compte avec les getters et les setters puis une fonction recup_let pour faire la récupération à partir de la bd et les inserets dans le fichier a partir du ArrayList

 private ArrayList<compte> liste = new ArrayList<compte>();
compte let ;


public void recup_let()
    {
               
       conn = Connexion_reprise.Connectdb();


       String requete = "select ncp , dev , age , sen , lib , dco , ope ,dou,rlet ,mon\n" +
"from compte\n" +
"group by ncp , dev , age , sen , lib , dco , ope ,dou,rlet ,mon ";
       
    try
    {
       pst = conn.prepareStatement(requete);
       rs=pst.executeQuery();

       
          let = new compte();
          
       
       
          while(rs.next())
        {        
   
            let.setncp(rs.getString("ncp"));
            let.setage(rs.getString("age"));
            let.setsen(rs.getString("sen"));
            let.setlib(rs.getString("lib"));
            let.setdco(rs.getString("dco"));
            let.setope(rs.getString("ope"));
            let.setdou(rs.getString("dou"));
            let.setrlet(rs.getString("rlet"));
            let.setmon(rs.getString("mon"));
                 
                liste.add(let);
for ( int j= 0 ;j< liste.size();j++)
{ // debut for
    
           System.out.println("Début génération fichier test.txt : " + new Date());
           out = new PrintWriter (new FileWriter(fichierZLETMOU0));
          out.write(""
                       + "0001
                       + "001"   
                     +remplireBlancD(liste.get(j).getncp(), 20) 
                    + cle_de_mouvement( liste.get(j).getmon(),  liste.get(j).getlib() ,98)
                     +"-RM" 
                      +remplireBlancD(liste.get(j).getope(), 9)
                      +remplireBlancD(" " ,6)//code_analytique
                       +remplireBlancD(" ",3) //banque de france
                       +"0" 
                     +remplireBlancD(liste.get(j).getlib(),30)
                    +remplireBlancD(" ",30)//libelle 2
                      +remplireBlancD(liste.get(j).getrlet(), 7) 
                       
               

              );
        
               out.println();
 } //fin for    
       }
                 out.close();                    

           System.out.println("----Fin génération fichier test.txt ----" + new Date());      
                
                
       
    }
      catch(Exception e)
    {
        System.out.println("impossible de récuperer les données"+e);
    }
            
    }   


A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 févr. 2020 à 12:10
Bonjour,

C'est normal, ton let est défini au niveau de la classe (mais pourquoi ?), et son assignation let = new compte() est située en dehors de la boucle.
Je ne comprends pas non plus pourquoi ton affichage for(..liste..) est placé dans la boucle While d'approvisionnement de list.
Fais plutôt :
try
    {
       pst = conn.prepareStatement(requete);
       rs=pst.executeQuery();
       
       while(rs.next())
       {        
            compte let = new compte();
            let.setncp(rs.getString("ncp"));
            let.setage(rs.getString("age"));
            let.setsen(rs.getString("sen"));
            let.setlib(rs.getString("lib"));
            let.setdco(rs.getString("dco"));
            let.setope(rs.getString("ope"));
            let.setdou(rs.getString("dou"));
            let.setrlet(rs.getString("rlet"));
            let.setmon(rs.getString("mon"));
            liste.add(let);
        }
for ( int j= 0 ;j< liste.size();j++)
{ // debut for
etc.
1
deep_sea Messages postés 201 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 10 décembre 2022 1
20 févr. 2020 à 13:46
ça marche merci bcp
0