1

私はこれまで問題なくこのクエリを実行していましたが、最近は例外が発生しています。

(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    

何か案は ?!?

ありがとう

4

1 に答える 1

2

その中のアイテムを見始める前に、最初の結果にたどり着く必要があります。

rs.next()より明確に:結果にアクセスするには、少なくとも 1 回呼び出す必要があります。より一般的には、n 番目の行を確認するには n 回呼び出す必要がありnext、SQL の結果では、カウントは 0 ではなく 1 から始まります。

于 2010-11-07T16:05:32.553 に答える