在java(jdbc)中使用相同的连接实例打开两个resultset时出现问题!

在java(jdbc)中使用相同的连接实例打开两个resultset时出现问题!,java,jdbc,oracle11g,resultset,Java,Jdbc,Oracle11g,Resultset,我最近有一个关于java中使用JDBC的结果集的问题 为了便于理解,我将用两个函数A和B演示一个示例,假设我们在函数A中创建一个结果集,我们称之为rs1,这个rs1将向我们返回从图书馆借来的一组书籍 因此,对于从rs1获取的每本书,我们调用函数B,它将定义另一个结果集rs2(rs2是使用相同的连接实例创建的),以确定借书的人 这里的问题是,当我们从rs1中提取第一本书并在rs1之后调用B时,next()返回false,因此它不会经过第一本书,但是当我没有在B中定义rs2时,它工作得很好。为什么呢

我最近有一个关于java中使用JDBC的结果集的问题

为了便于理解,我将用两个函数A和B演示一个示例,假设我们在函数A中创建一个结果集,我们称之为rs1,这个rs1将向我们返回从图书馆借来的一组书籍

因此,对于从rs1获取的每本书,我们调用函数B,它将定义另一个结果集rs2(rs2是使用相同的连接实例创建的),以确定借书的人

这里的问题是,当我们从rs1中提取第一本书并在rs1之后调用B时,next()返回false,因此它不会经过第一本书,但是当我没有在B中定义rs2时,它工作得很好。为什么呢


注意:rs1和rs2使用相同的连接实例创建

您是否使用相同的
语句执行这两个查询?JDBC只允许为每个
语句
打开一个
结果集
,因此如果对内部查询使用相同的
语句
,它将关闭用于外部查询的结果集。如果对内部查询使用单独的
语句
,您应该能够执行所需操作。

更强大的是,在自动提交模式(默认设置)下,对该连接中的任何其他语句执行查询都会关闭结果集(假设默认设置为not holdable over commit)。“为了便于理解,我将举例说明……”在未来,不要只是用文字描述,而是提供一个实际的可执行代码。可执行代码比散文更精确。