【发布时间】:2019-03-15 00:29:58
【问题描述】:
我正在编写一个使用 JDBC 连接到 Oracle 的核心 java 程序。
- 我正在选择带有选择条件的第一个表以获取少量行 ID。我在结果集中选择了一些记录
- 现在我在 while 循环中循环结果集 (while resultSet.next())
- 然后为 id 与第一个结果集中的 id 相同的行选择我的第二个表
在两个选择中,我都使用相同的 Statement 对象。在运行程序时,我只获得第一行详细信息,然后 java 抛出结果集已关闭的错误
简而言之,我想知道是否可以在循环之前和循环内使用一个 Statement 对象?
下面是我的代码示例
allCOBbatchRSet=stmt.executeQuery("SELECT RECID FROM V_F_BATCH WHERE BATCH_STAGE IS NOT NULL");
while (allCOBbatchRSet.next())
{
BatchRSet=stmt.executeQuery("SELECT XMLRECORD FROM F_BATCH WHERE RECID="+cobBatchRecId);
BatchRSet.next();
............
}
异常失败
java.sql.SQLException: Closed Resultset: next at
oracle.jdbc.driver.InsensitiveScrollableResultSet.ensureOpen(InsensitiveScrollableResultSet.java:109) at
oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:398) at
com.manohar.t24.COBDetails.getCOBDetails(COBDetails.java:46)
【问题讨论】:
-
为什么是星号?
-
在问题中添加代码 sn-p 会给出一些观点,而不是你在做什么。
-
为什么在java中使这个逻辑复杂化..你不使用连接吗?
-
大家好,感谢您的帮助。我已经添加了我的代码部分。我正在使用相同的 Statement 对象来执行 2 个不同的 SQL Select 查询。我的 while 循环只执行一次,当循环处于第二次迭代时,它失败并出现异常 java.sql.SQLException: Closed Resultsset: next at oracle.jdbc.driver.InsensitiveScrollableResultSet.ensureOpen(InsensitiveScrollableResultSet.java:109) 在 oracle .jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:398) at com.manohar.t24.COBDetails.getCOBDetails(COBDetails.java:46)
-
是的,您可以使用一个
Statement,但是一旦您从中获得第二个ResultSet,第一个就会失效。
标签: java jdbc resultset multiple-resultsets