SQLSTATE 24000-无效的游标状态
我连接到DB2数据库并进行以下查询。我不明白为什么会收到错误:“无效的光标状态”。
public static void blivPar() { try {
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt.setMaxRows(1000);
ResultSet drenge = stmt.executeQuery("SELECT * FROM People WHERE sex='M'");
ResultSet piger = stmt.executeQuery("SELECT * FROM People WHERE sex='F'");
drenge.first();
piger.first();
int i=0;
while(drenge.next()) {
while(piger.next()) {
i++;
System.out.print(i);
stmt.execute("INSERT INTO Couples Values ('"+drenge.getString(1) +
"','" + drenge.getString(2) +
"','" + piger.getString(1) +
"','" + piger.getString(2) + "')");
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
谢谢。
回答:
在Statement接口的JDBC Javadocs上找到了这个:“该对象用于执行静态SQL语句并返回其产生的结果。
如果存在打开的语句,Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。“请参阅语句javadoc
因此,在我看来,如果要同时打开两个ResultSet,则需要两个不同的Statement。或者,您需要完成第一个ResultSet的处理并将其关闭,以便可以重新使用Statement创建第二个ResultSet。
以上是 SQLSTATE 24000-无效的游标状态 的全部内容, 来源链接: utcz.com/qa/401212.html