【发布时间】:2016-07-15 06:41:49
【问题描述】:
尝试使用资源会给我以下异常:
java.sql.SQLException: ResultSet 关闭后不允许操作
我的代码:
public Set<Tablet> viewAllTablets(int offset, int noOfRecords) throws OutOfRangeException {
Set<Tablet> tabletSet = new HashSet<>();
Tablet tablet = null;
try(Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT SQL_CALC_FOUND_ROWS * FROM tablets limit " + offset + ", " + noOfRecords + ";");
ResultSet resultSet = preparedStatement.executeQuery();
ResultSet resultSet1 = preparedStatement.executeQuery("SELECT FOUND_ROWS()");){
while (resultSet.next()){
tablet = new Tablet();
tablet.setTabletId(resultSet.getInt("idTablet"));
tablet.setName(resultSet.getString("name"));
tablet.setNeedRecepie(resultSet.getBoolean("need_recipe"));
tablet.setPrice(resultSet.getDouble("price"));
tablet.setTypeId(resultSet.getInt("type_id"));
tablet.setDescription(resultSet.getString("description"));
tablet.setTabletType(TypeFactory.getType(tablet.getTypeId()));
tablet.setWeight(resultSet.getDouble("weight_of_pack"));
tablet.setPillsCount(resultSet.getInt("pills_count"));
tabletSet.add(tablet);
}
if(resultSet1.next())
this.noOfRecords = resultSet1.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
}
return tabletSet;
}
【问题讨论】:
-
请包括 ENTIRE、COMPLETE 堆栈跟踪,并确定代码中引发异常的行。如果没有这些基本信息,没有人可以帮助您。
-
Try with resources 在 try 块完成后自动关闭打开的资源
-
@pahan:虽然这是真的,但与上述无关。在 try-with-resources 完成之后,OP 没有访问(也无法访问)那些 ResultSets。
标签: java jdbc try-with-resources