当前位置: 首页 > 面试题库 >

SQLSTATE 24000-无效的游标状态

王渊
2023-03-14
问题内容

我连接到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对象。
因此,如果一个ResultSet对象的读取与另一个的读取交错,则每个都必须由不同的Statement对象生成。
如果存在打开的语句,Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。“请参阅语句javadoc

因此,在我看来,如果要同时打开两个ResultSet,则需要两个不同的Statement。或者,您需要完成第一个ResultSet的处理并将其关闭,以便可以重新使用Statement创建第二个ResultSet。



 类似资料:
  • 问题内容: 我创建了一个简单的应用程序,该程序将数据库值与文本字段值进行比较,但是当我执行项目时,它会为我提供以下内容: :[Microsoft] [ODBC驱动程序管理器]无效的光标状态 这是我正在使用的代码: 这可能是什么原因? 问题答案: 当你这样做,的初始位置是 之前 的第一行。 您必须将其前进到第一行。 将您的处理封闭在一个块中

  • 问题内容: 我正在尝试遍历此循环: 我在第100,000个以上的记录中收到以下错误。 这个错误是什么意思? 问题答案: 也许光标在服务器上超时了。要查看这是否是问题,请尝试将timeout = False设置为: 参见http://api.mongodb.org/python/1.6/api/pymongo/collection.html#pymongo.collection.Collection

  • 问题内容: 我正在尝试使用以下代码获取mongo数据库中存在的一些ID: 但是,过了一会儿,我收到此错误: pymongo.errors.CursorNotFound:游标ID’…’在服务器上无效。 我发现这篇文章提到了这个问题。不过,我不清楚该采取哪种解决方案。可以使用吗?上面的命令到底是做什么的?我可以使用所有数据库ID吗? 问题答案: 由于光标在服务器上超时(不活动10分钟后),因此出现此错

  • 问题内容: 我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员): 错误: app.js: 以下是我的edit.js路由,我认为是发生问题的地方: 问题答案: 我刚才有一个类似的错误消息,并设法通过更改解决了该问题: 至: 要不就: 也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。 这可能是问题所在,但看起来您不小心复制了代码

  • 当用户单击“登录”时,会重定向到KeyClope登录页面 [Server:node-00]13:40:00709警告[org.keydape.adapters.OAuthRequestAuthenticator](默认任务-30)状态参数无效 我的申请是: 应用程序URL为https://localhost:8443/app 当我使用超文本传输协议时,它可以工作。但是当我使用https时,错误就来

  • 即使在a:hover的末尾添加也不起作用。