Ma liste retourne un élément seulement

deep_sea Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   -  
deep_sea Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   1
 
ça marche merci bcp
0