【问题标题】:java: Statement.RETURN_GENERATED_KEYS Err:S1000 Exp: Before start of result setjava: Statement.RETURN_GENERATED_KEYS Err:S1000 Exp: 结果集开始之前
【发布时间】:2023-04-11 12:00:01
【问题描述】:

我以前执行此查询时没有任何问题,但最近我遇到了异常。

(在 mysql 服务器上)

48442 [NioProcessor-1] ERROR c.x.xpofacebook.mysql.MysqlDb - SQLException: Before start of result set
48443 [NioProcessor-1] ERROR c.x.xpofacebook.mysql.MysqlDb - SQLState: S1000
48443 [NioProcessor-1] ERROR c.x.xpofacebook.mysql.MysqlDb - VendorError: 0
48451 [NioProcessor-1] ERROR c.x.xpofacebook.mysql.MysqlDb - stack trace: java.sql.SQLException: Before start of result set

代码:

String createPlayerRow = "insert into highscore_challenge_player "
            + "(fb_user_id,played,best_score,highscore_challenge_id) values ((select fb_user.id from fb_user where uid=?),?,?,?)";
        stmt.close();
        stmt = conn.prepareStatement(createPlayerRow,Statement.RETURN_GENERATED_KEYS);
        stmt.setLong(1, uid);
        stmt.setInt(2, 0);
        stmt.setInt(3, 0);
        stmt.setInt(4, highscoreChallengeId);
        stmt.executeUpdate();
        rs = stmt.getGeneratedKeys();
        rowId = rs.getInt(1); <--- ERROR IN THIS LINE    

有什么想法吗? !?

谢谢

【问题讨论】:

    标签: java mysql prepared-statement sqlexception


    【解决方案1】:

    您需要to get to the first result 才能开始查看其中的项目。

    更明确地说:您需要至少调用一次rs.next() 才能访问结果。更一般的,你需要调用nextn次才能查看第n行,并且用sql结果,count从1开始,而不是0。

    【讨论】:

    • @ufk:没有问题 - 我实际上是在问我自己的类似问题时了解到这个问题的答案。当你看到它出现时,一定要回馈!
    猜你喜欢
    • 2011-04-12
    • 2013-10-01
    • 2022-01-18
    • 2012-02-08
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多