为什么我得到java.sql.SQLException:ResultSet关闭后不允许操作



所以我一直在四处寻找这个问题,当一个语句试图获取多个ResultSet时,问题似乎就出现了。

但在下面的代码中,我得到了异常,尽管executeUpdate只返回了一个int

ResultSet resultsRS = statement.executeQuery("select distinct snum from shipments where quantity >= 100");
int rowCount=0;
while(resultsRS.next()){
    statement.executeUpdate("UPDATE suppliers SET status = status + 5 WHERE snum = "+"""+resultsRS.getString(1)+""");
    rowCount++;  
}

它运行一次很好,之后它会给出异常。我该如何解决这个问题?

Statement接口中的所有执行方法都会隐式关闭语句的当前ResultSet。请参阅文档,因此您需要将resultSet数据存储在一个临时数组中并循环使用

或者尝试使用另一条语句执行更新。

试试这样的东西:

    ArrayList<String> tmp = new ArrayList<String>();
    while(resultsRS.next()){
        tmp.add(resultsRS.getString(1));
    }
    for (String s: tmp) {
        statement.executeUpdate("UPDATE suppliers SET status = status + 5 WHERE snum = "+"""+s+""");
        rowCount++;
    }

相关内容

  • 没有找到相关文章

最新更新