Le problème est qu'après avoir affiché le ResultSet
avec <h:dataTable>
la connexion reste ouverte. Si je la ferme, la connexion est fermée. ResultSet
aussi. Je pense copier le ResultSet
dans un certain nombre de HashMap
/ ArrayList
combo. Existe-t-il un bon moyen de résoudre ce problème ?
Réponses
Trop de publicités?En effet, vous devez toujours acquérir et fermer le Connection
, Statement
y ResultSet
dans le le plus court Il ne faut jamais les passer en dehors de la classe DAO, ni dans le champ d'application possible (de préférence à l'intérieur du même bloc de méthode). Vous devez faire correspondre les ResultSet
à un List<Data>
dans lequel Data
représente chaque ligne du tableau. Voici un exemple basique de mappage d'un jeu de résultats :
List<Data> items = new ArrayList<Data>();
...
while (resultSet.next()) {
Data item = new Data();
item.setColumn1(resultSet.getString("column1"));
item.setColumn2(resultSet.getString("column2"));
items.add(item);
}
...
return items;
Vous pouvez alors l'utiliser dans le h:dataTable
's value
attribut.
Pour plus d'exemples et d'informations, vous pouvez consulter l'un des articles suivants ou les deux :
http://balusc.blogspot.com/2006/06/using-datatables.html
http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html
Bonne chance.
Veuillez consulter le lien suivant : http://www.coderanch.com/t/478265/JSF/java/Displaying-array-data-tables#2585794
Je suis sûr que cela vous aidera à résoudre votre problème
Utilisez-vous Modèle ResultDataSet ? Si oui, notez-le dans la javadoc reste Note that the specified ResultSet MUST be scrollable
.
Statement stmt=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
Voici un exemple complet de Modèle ResultDataSet cas d'utilisation.