2011-03-05 55 views
0

我试图做到这一点:打开两个结果同时

while (rs.next()) { 
    int id = rs.getInt(1); 

    ResultSet innerRs = stmt.executeQuery("select something from sometable where id =" + id + ";"); 

    String one = innerRs.getString(1); 
    String two = rs.getString(2); //result set is already closed thrown here. 

} 

但我得到的错误“结果集已关闭”。我正在使用Postgresql。我无法找到另一种方法来做到这一点,这不是非常耗费劳力。我怎样才能解决这个错误?

回答

4

您不需要两个结果集。只需learnSQL JOIN clause,以便您可以在单个SQL查询中从两个不同表中获取所需的数据。

如果你真的需要,那么创建一个单独的语句而不是重用现有的语句确实是一种方法。重用它将强制所有先前打开的游标(结果集)被关闭。

+0

我认为加入可能是理想的,谢谢。将实施它并看到。 – providence 2011-03-05 04:17:40

+0

@providence它可能是最好的加入(生病承认我没读过你的字符串),但为什么你会得到这个错误的答案是结果集关闭我张贴作为第一个答案。很高兴知道您是否在未来遇到此问题。我有一个类似的问题,编写2个独立的数据库管理系统之间的接口:) – rayman86 2011-03-05 04:25:01

+0

辉煌,这没有把戏。总是很高兴学习这样的功能!此外,谢谢@ rayman86解释错误的性质!那知识一定会派上用场+1 – providence 2011-03-05 04:42:32

3

您使用stmt.executeQuery(),是否用stmt执行rs?如果是这样,您需要一个新的statement作为创建查询您使用已经强制它关闭,导致此错误。

相关问题