java: Statement.RETURN_GENERATED_KEYS Err:S1000 Exp: 在结果集开始之前

标签 java mysql prepared-statement sqlexception

我曾经执行这个查询没有任何问题,但最近我遇到了异常。

(在 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    

有什么想法吗? !?

谢谢

最佳答案

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

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

关于java: Statement.RETURN_GENERATED_KEYS Err:S1000 Exp: 在结果集开始之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118481/

相关文章:

mysql - 在 MySQL SERVER 8.0 中,PASSWORD 函数不起作用

mysql - 如何计算每天具有不同 IP 地址的行数?

PHP - bind_result 到数组

java - 在 JSP 上使用 Apache POI 时出现异常

java - JNI : Is it safe to make java object a C++ class member?

Java:Selenium Grid:如何在特定节点上运行特定测试

php - 如何从mysql表中选择多个枚举值?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

sql - PostgreSQL 在发送参数时要求 'group by' 子句

java - 在纸上绘制背景区域