Bonjour j'ai un problème dont j'ai identifié la cause. Mais je ne trouve pas la solution.
Je suis entrain de m'écrire une class SQLAbstract qui me permet de gérer les requêtes SQL.
J'ai une méthode
Qui me permet de récupérer les nom des colonnes que j'ai cherché grâce à une requête de type select. Elle marche vraiment bien
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 public ArrayList<String> getListColonneRecup() throws SQLException { ResultSetMetaData rsmd = this.rs.getMetaData(); int colomnCount = rsmd.getColumnCount(); ArrayList<String> res=new ArrayList<String>(); for(int i=1;i<=colomnCount;i++) { res.add(rsmd.getColumnName(i)); } return res; }
Par la suite je voudrais récupérer le résultat dans un tableau associatif du type tableau["nomColonne"] => "liste de valeur associé a cette colonne".
La cle sera de type String et la liste valeur de type ArrayList<String>.(surement à modifier par la suite mais pour l'instant j'ai besoin de bdd ne contenant que des string).
Donc j'ai choisi une HashMap<String,ArrayList<String>> pour faire ça. Voici la fonction qui créé le tableau associatif à partir d'un resultSet.
Le problème se situe au niveau de mon commentaire. Quand je teste ma fonction et si je laisse cette directive il me crée bien un tableau associatif avec les bonnes clé mais elles pointent vers des liste vide. Par contre si j'enlève cette directive j'ai un tableau avec les bonnes clés mais qui pointent sur des listes contenant toutes les valeurs de toutes les colonnes.
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 public HashMap<String, ArrayList<String>> getListRes() throws SQLException { HashMap<String, ArrayList<String>> res=new HashMap<String, ArrayList<String>>(); ArrayList<String>l =this.getListColonneRecup(); ArrayList<String>temp=new ArrayList<String>(); ListIterator<String> it =l.listIterator(); String courant; while(it.hasNext()) { courant=it.next(); System.out.println(courant); while(rs.next()) { temp.add(this.rs.getString(courant)); } res.put(courant,temp); temp.clear(); // le probleme est ici this.rs.beforeFirst(); } return res; }
ça doit être normal puisque quand je fais temp.clear() j'efface toute ma liste. Mais je ne sais pas comment faire pour utiliser correctement cette liste "tampon".
J'ai vraiment du mal à être clair.![]()
Partager