看起来当我关闭Connection
时,ResultSet
将自动关闭。
但是我想在另一个方法中返回ResultSet
并使用它,那么我不知道在哪里关闭Connection
和PreparedStatement
。
public ResultSet executeQuery(String sql, String[] getValue)
{
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
conn = getConn();
pstmt = conn.prepareStatement(sql);
if (getValue != null)
{
for (int i = 0; i < getValue.length; i++)
{
pstmt.setString(i + 1, getValue[i]);
}
}
rs = pstmt.executeQuery();
} catch (Exception e)
{
e.printStackTrace();
closeAll(conn, pstmt, rs);
}
return rs;
}
我已经将closeAll(conn, pstmt, null);
放入catch块中,因为我发现如果将其放在finally块中,我将在它返回之前立即失去rs
。
现在当我想关闭rs
时,我无法关闭conn
和pstmt
。有什么解决方法吗?