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

回到顶部