Java 同时打开两个结果集

Java 同时打开两个结果集,java,sql,jdbc,Java,Sql,Jdbc,我正在尝试这样做: 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

我正在尝试这样做:

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。我真的想不出另外一种不是劳动密集型的方法。如何避免此错误?

您使用
stmt.executeQuery()
,是否使用
stmt
执行
rs
?如果是这样,您需要一个新的
语句
,因为在已使用的语句上创建查询会强制关闭该语句,从而导致此错误。

您不需要两个结果集。只需一个SQL查询,就可以从两个不同的表中获得所需的数据


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

我认为连接可能是理想的,谢谢。将实现它并查看。@providence它可能最适合加入(我承认我没有读取您的字符串),但您为什么会得到错误的答案是我作为第一个答案发布的结果集closed。很高兴知道你将来是否会遇到这种情况。我在两个独立的DBMS之间编写接口时遇到了类似的问题:)太棒了,这就成功了。总是很高兴了解像这样的功能!另外,感谢@rayman86解释错误的性质!这些知识一定会在某个时候派上用场+1@providence:不客气@雷:是的,你的答案已经得到了投票。顺便问一下,两个独立的数据库管理系统怎么会共享同一条语句呢。该语句只针对一个DMB,但我需要resultset修改另一个中的一些语句,并在第一个语句上运行更多查询,因此当我尝试重新使用该语句时,出现了错误。我最终使用了3条语句,但尝试重复使用的经验向我展示了这一点:)