gpt4 book ai didi

java - DSRA9110E : ResultSet is closed

转载 作者:行者123 更新时间:2023-12-04 06:03:55 28 4
gpt4 key购买 nike

我们有一个 Java 类,它循环遍历包含 Store 信息的结果集,然后开始为每个相应的 Store 处理 ascii 文件。对于每个存储处理 ascii 文件大约需要 5 分钟。我们遇到的问题是在它处理第一个存储的 ascii 文件然后获取下一个结果集后,我们得到一个 SQLException 说“DSRA9110E: ResultSet is closed”。

我们的代码基本上是这样的。

private void startProcess() throws Exception {
PreparedStatement pstmt = null;
ResultSet rs = null;

try {
pstmt = conn.prepareStatement("SELECT STORE_CODE FROM STORE");
rs = pstmt.executeQuery();

while (rs != null && rs.next()) {
System.out.println("Processing store " + rs.getString("STORE_CODE"));

try {
processStoreSalesFile();
} catch (Exception e) {
conn.rollBack();
e.printStackTrace();
}

if (rs != null) {
System.out.println("ResultSet is not null");
}
}
} finally {
if (rs != null) {
rs.close();
rs = null;
}

if (pstmt != null) {
pstmt.close();
pstmt = null;
}
}
}

发生错误时,我确实看到系统打印行“ResultSet is not null”。但是当它获得下一个 ResultSet 时,它说 ResultSet 已关闭。

我试图注释掉调用 processStoreSalesFile() 的代码,但我们没有收到此错误,它能够在不抛出任何异常的情况下获取下一个 ResultSet。

我尝试的下一个尝试是取消对 processStoreSalesFile() 方法的调用的注释,然后从文件系统中删除任何 ascii 文件,以便程序将没有任何要处理的内容。也没有抛出异常。

我们的设置是 WebSphere-Informix。我们有另一个设置 WebSphere-Oracle 并且没有任何问题。

我怀疑的是 ResultSet 已超时,或者它只是不想等待进程完成并自行关闭。

更新 1:
在 processStoreSalesFile() 方法中,有一个 conn.commit() 调用来提交记录。是不是在调用提交时,ResultSet 将被关闭?在 WAS 管理控制台中,我已经添加了值为“1”的数据源属性 resultSetHoldability。但 ResultSet 仍然关闭。

我希望有人能在这里帮助我:(

谢谢。

最佳答案

这是我们所做的工作。最初,Websphere 被配置为使用 Informix JDBC 驱动程序作为其数据源,因为我们要连接到 Informix 数据库。我们将其更改为使用 DB2 JCC 驱动程序(由 IBM Informix 技术支持提出),然后在数据源自定义属性中,我们将“resultHoldability”值设置为“1”(HOLD_CURSORS_OVER_COMMIT)。重新运行程序,它设法遍历结果集中的所有结果。

关于java - DSRA9110E : ResultSet is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com