Ma liste retourne un élément seulement

deep_sea Messages postés 215 Statut Membre -  
deep_sea Messages postés 215 Statut Membre -
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 3742 Statut Membre 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 215 Statut Membre 1
 
ça marche merci bcp
0