【问题标题】:Ms access "invalid record set status" error女士访问“无效的记录集状态”错误
【发布时间】:2015-01-06 21:55:49
【问题描述】:

我成功连接到我的访问数据库并且我的 sql 工作正常,之后我有一个结果集。代码如下:

            Statement stmt = con.createStatement();
            String sqlStr ="select max(ID) from GuestBook ";
            ResultSet rset = stmt.executeQuery(sqlStr);

但是当我想从这样的结果集中获得价值时;

            int id = rset.getInt(1);

或

            int id = rset.getInt("ID");//or "max(ID)"

我有一个 sql 异常。

例外是“无效的记录集状态”

我该如何解决这个问题?

【问题讨论】:

    标签: java sql ms-access resultset jdbc-odbc


    【解决方案1】:

    将为max(ID) 生成列名"Expr1000"。但我认为最好使用As 子句给它一个定义明确的别名。

    您必须调用rset.next() 才能移动到第一行,因为最初,光标位于第一行之前。

    Statement stmt = con.createStatement();
    String sqlStr ="SELECT max(ID) As LastID FROM GuestBook";
    ResultSet rset = stmt.executeQuery(sqlStr);
    int id = 0;
    if (rset.next()) {
        id = rset.getInt("LastID");
        // OR
        id = rset.getInt(1);
    }
    

    【讨论】:

    • 谢谢。 int id = rset.getInt("LastID");没用,但另一个有效。
    • *"Access 为聚合函数创建了一个名为 "MaxOfID" 的列名。" - Access 中的查询生成器会为您执行此操作,但如果您使用原始 SQL(如问题中所示)并且未指定列别名,则该列名为 [Expr1000]。
    • @GordThompson:好的,我更改了文本。 (我必须承认,我从来没有使用过 jdbc,只是从谷歌上得到的信息。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多