我连接到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();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
在Statement接口的JDBC Javadocs上找到了这个:"用于执行静态SQL语句并返回它产生的结果的对象.
默认情况下,每个Statement对象只能同时打开一个ResultSet对象.因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成.如果存在打开的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象."请参阅声明javadoc
因此,如果您希望同时打开两个ResultSet,我认为您需要两个不同的语句.或者您需要完成处理第一个ResultSet并关闭它,以便您可以重新使用Statement来创建第二个ResultSet.
| 归档时间: |
|
| 查看次数: |
13409 次 |
| 最近记录: |