问题是,在显示ResultSet
with之后<h:dataTable>
,连接保持打开状态。如果我关闭它,它ResultSet
也会关闭它。我正在考虑将ResultSet
数据复制到一些HashMap
/ArrayList
组合中。有没有解决这个问题的好方法?
3 回答
实际上,您应该始终在尽可能短的范围内获取和关闭Connection
,Statement
和(最好已经在同一个方法块内),并且永远不要将它们中的任何一个传递到 DAO 类之外。您需要将 映射到代表表格的每一行的其中。这是一个如何映射结果集的基本示例:ResultSet
ResultSet
List<Data>
Data
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;
然后你可以在h:dataTable
'svalue
属性中使用它。
有关更多示例和见解,您可能会发现以下一篇或两篇文章很有用:http:
//balusc.blogspot.com/2006/06/using-datatables.html
http://balusc.blogspot.com/2008/07/ dao-tutorial-data-layer.html
祝你好运。
你在使用ResultDataSetModel吗?如果是,请注意在 javadoc 中保留Note that the specified ResultSet MUST be scrollable
.
Statement stmt=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
这是ResultDataSetModel 用例的完整示例。
请查看以下链接: http: //www.coderanch.com/t/478265/JSF/java/Displaying-array-data-tables#2585794
我相信可以帮助您解决问题