Java 关闭准备好的语句是否会关闭与其关联的结果集?

Java 关闭准备好的语句是否会关闭与其关联的结果集?,java,database,jdbc,Java,Database,Jdbc,我有一个函数,它返回一个与准备语句关联的结果集。我在finally块中关闭准备语句。 它会自动关闭我需要返回的结果集。 有什么替代方法? 我的代码如下所示 Resultset fnName(){ Resultset rs = null; PreparedStatement ps = new PreparedStatement(); try{ rs = ps.execute(<query string>); } catch(...){...} final

我有一个函数,它返回一个与准备语句关联的结果集。我在finally块中关闭准备语句。 它会自动关闭我需要返回的结果集。 有什么替代方法? 我的代码如下所示

Resultset fnName(){
  Resultset rs = null;
  PreparedStatement ps = new PreparedStatement();
  try{
    rs = ps.execute(<query string>);
  }
  catch(...){...}
  finally{
    ps.close().
  }
  return rs;
}
Resultset fnName(){
结果集rs=null;
PreparedStatement ps=新的PreparedStatement();
试一试{
rs=ps.execute();
}
捕获(…){…}
最后{
ps.close()。
}
返回rs;
}

您可以阅读Javadoc(我的重点):

立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况。通常情况下,最好在使用完资源后立即释放资源,以避免占用数据库资源

对已关闭的语句对象调用close方法无效

注意:关闭语句对象时,其当前结果集对象(如果存在)也将关闭。


您可以阅读Javadoc(我的重点):

立即释放此语句对象的数据库和JDBC资源,而不是等待它自动关闭时发生这种情况。通常情况下,最好在使用完资源后立即释放资源,以避免占用数据库资源

对已关闭的语句对象调用close方法无效

注意:关闭语句对象时,其当前结果集对象(如果存在)也将关闭。


这取决于JDBC驱动程序的实现。Oracle驱动程序也将关闭结果集。无法返回关闭的preparedstatement结果集。将结果集输出存储到指定的bean中并返回该bean。@TimothyTruckle实际上,
语句
(superinterface)的定义明确定义了关闭该语句也会关闭
结果集。@JimGarrison希望所有实现者都看到了这一点;o) 这取决于JDBC驱动程序的实现。Oracle驱动程序也将关闭结果集。无法返回关闭的preparedstatement结果集。将结果集输出存储到指定的bean中并返回该bean。@TimothyTruckle实际上,
语句
(superinterface)的定义明确定义了关闭该语句也会关闭
结果集。@JimGarrison希望所有实现者都看到了这一点;o)
void close​()
      throws SQLException