所以我一直在四处寻找这个问题,当一个语句试图获取多个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++;
}
它运行一次,之后它给出了异常。 我怎么能解决这个问题?
答案 0 :(得分:2)
Statement接口中的所有执行方法都隐式关闭了一个statment的当前ResultSet。 See docs因此,您需要将resultSet数据存储在临时数组中并循环遍历它。
或者尝试使用另一个语句来执行executeUpdate。
尝试这样的事情:
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++;
}