Bonjour,
Je cherche depuis plusieurs heures comment afficher les lignes que je récupère depuis ma requête SQL (via mon ResultSet) sur ma JTable.
J'ai créer une méthode qui exécute une requête SQL et retourne une List<List<Object>>(2 cases). La première case (0) contient une liste avec le nom des colonnes et la seconde case (1) contient la seconde liste qui contient des Object[] correspondant aux champs de la base (les lignes).
Voilà comment elle se remplissent :
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 List<List<Object>> result = new ArrayList<List<Object>>(2); List<Object> dataLines = new ArrayList<Object>(); List<Object> nomColonne = new ArrayList<Object>(); ResultSet rs = c.createStatement().executeQuery(sql_command); int numColumns = rs.getMetaData().getColumnCount(); for ( int i = 0 ; i < numColumns ; i++ ) nomColonne.add(rs.getMetaData().getColumnLabel(i+1)); result.add(nomColonne); // Read SQL rows while(rs.next()) { Object[] obj = new Object[numColumns]; for ( int i = 0 ; i < numColumns ; i++ ) { // Column numbers start at 1. obj[i] = rs.getObject(i+1); } dataLines.add(obj); } result.add(dataLines);
Ensuite dans la fonction qui récupère cette liste de liste, j'essaye de le mettre dans ma JTable.
Pour les colonnes c'est bon car je fais un :
liste.get(0).toArray() -> Object[]
et
model.setColumnIdentifiers(liste.get(0).toArray());
En revanche pour ajouter les lignes, j'utilise model.addRow(Object[]);
Donc j'ai essayer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(int i = 0; i < liste.get(1).size(); i++) { Object[] o = liste.get(1).get(i). // Je n'ai pas accès à toArray() ici model.addRow(o); }
Comment faire pour ajouter les lignes à la JTable ?
Est-ce que une List<List<Object>> est une bonne solution ?
(Bien entendu, il ne faut pas les mettre dans la méthode qui exécute la requête...)
Partager