0

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

但是在下面的代码中,我得到了异常,即使 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++;  
}

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

4

1 回答 1

2

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++;
    }
于 2013-07-15T08:13:45.587 回答