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

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;
 
}
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

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.

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;
	}
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.

ç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.