La possibilité de transformer un ResultSet en ArrayList est particulièrement intéressante, surtout dans le contexte d’un DAO (Data Access Object) lorsqu’on souhaite récupérer une liste d’objets. Voici un exemple code source qui permet d’effectuer cette transformation.
// Récupération d'une liste d'objets personnes à partir d'une source de données
public Collection<Personne> getAll() throws SQLException {
Collection<Personne> collPersonnes = new ArrayList<Personne>();
String sql = "select * from PERSONNES";
// Récupèration de connection SQL à partir d'une Factory faite maison
Connection connection = OracleDAOFactory.createConnection();
PreparedStatement pst = connection.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
Personne personne = null;
while (rs.next()) {
personne = new Personne(); // Nouvelle instance de personne
personne.setNom( rs.getString(1) );
personne.setPrenom( rs.getString(2) );
// Autres champs
collPersonnes.add( personne ); // Ajout à la collection
}
return collPersonnes; // Retour de la fonction
}
}
public Collection<Personne> getAll() throws SQLException {
Collection<Personne> collPersonnes = new ArrayList<Personne>();
String sql = "select * from PERSONNES";
// Récupèration de connection SQL à partir d'une Factory faite maison
Connection connection = OracleDAOFactory.createConnection();
PreparedStatement pst = connection.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
Personne personne = null;
while (rs.next()) {
personne = new Personne(); // Nouvelle instance de personne
personne.setNom( rs.getString(1) );
personne.setPrenom( rs.getString(2) );
// Autres champs
collPersonnes.add( personne ); // Ajout à la collection
}
return collPersonnes; // Retour de la fonction
}
}
Il est aussi possible de parcourir les colonnes une à une de la manière suivante:
ResultSetMetaData rsmd = rs.getMetaData(); // Récupération des métadonnées
for (int i = 1; i <= rsmd.getColumnCount(); i++){
record.add(rs.getString(i));
}
for (int i = 1; i <= rsmd.getColumnCount(); i++){
record.add(rs.getString(i));
}
– James Poulson.