Bonjour,
Je fais un select sur une table commandeClient qui est composé de ligneCommande. Mon but est de créer une ArrayList de Commande client.
Je cale un peu pcq je boucle pour avoir les infos sur ma commandes et dans cette boucle je boucle pour prendre toutes les lignes. Au début j'avais fais deux while(donnees.next) mais alors quand je passe à la nouvelle commande il lit deux fois. du coup j'ai essayé avec un donnees.islAst mais il n'en veut pas.
Et quand je test ce code il me trouve qu'une commande alors qu'il y en a deux.
PS : les méthodes constructionCommande et constructionLigneCommande ne font que garnir les objets
Merci
Voilà le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 ArrayList<CommandeClient> liste=new ArrayList<CommandeClient>(); CommandeClient cc; String requeteSQL="select * " +"from Client c join CommandeClient cc " +"on c.Numéro=cc.NumClient " +"join ligneCommande l " +"on cc.\"NUMÉRO\"=l.COMMANDECLIENTNUM " +"join marchandise m " +"on l.MARCHANDISE=m.\"RÉFÉRENCE\" " +"join adresse a " +"on(a.rue=cc.LivraisonRue and a.numéro=cc.LivraisonNuméro and a.codepostal=cc.LivraisonCodepostal and a.localité=cc.LivraisonLocalité) " +"where cc.NUMCLIENT=?"; try{ PreparedStatement prepStat = connexion.prepareStatement(requeteSQL); prepStat.setInt(1, numCli); ResultSet donnees = prepStat.executeQuery(); ResultSetMetaData meta = donnees.getMetaData(); donnees.next(); while(donnees.isLast()==false){ int numCom=donnees.getInt("Numéro"); cc=constructionCommande(donnees,meta); cc.addLigneCommande(constructionLigneCommande(donnees)); while(donnees.next()&&numCom==donnees.getInt("Numéro")){ /* On ajoute les lignes de commandes */ cc.addLigneCommande(constructionLigneCommande(donnees)); } liste.add(cc); } }
Partager