我有一个Servlet
,它使用一个返回ResultSet
的静态实用工具方法。
在我的Servlet代码中我有
ResultSet rs = SimpleSearch.searchByName(request);
在我的searchByName
方法中,我有以下代码(非完整代码);
try {
preparedStatement = connection.prepareStatement(str);
preparedStatement.setDate(1, firstSQLDOB);
preparedStatement.setDate(2, secondSQLDOB);
rs = preparedStatement.executeQuery();
resultSet = rs;
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (preparedStatement != null) {
preparedStatement.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
return resultSet;
关闭rs
是否也会关闭resultSet
?
答案 0 :(得分:2)
是的,因为resultSet
和rs
是指向同一对象的两个引用。
我不会正常传递你的结果集,因为你想控制它的闭包(并防止资源泄漏)。我宁愿得到它,迭代并构建一组与其结果相关的对象,关闭结果集并从数据库中交回你生成的对象集合。
答案 1 :(得分:1)
它是相同的ResultSet。你关闭了它:它关闭了。没有关闭对同一对象的单独引用。
答案 2 :(得分:0)
关闭rs是否也会关闭resultSet?
是。你是对的。它关闭,因为他们指向相同的参考。