Java: Statement.RETURN_GENERATED_KEYS Ошибка: S1000 Exp: до начала набора результатов - PullRequest
0 голосов
/ 07 ноября 2010

Раньше я выполнял этот запрос без проблем, но в последнее время у меня были исключения.

(на сервере 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    

есть идеи? !?

спасибо

1 Ответ

1 голос
/ 07 ноября 2010

Вам нужно , чтобы перейти к первому результату , прежде чем вы сможете начать просматривать элементы в нем.

Более конкретно: вам нужно хотя бы один раз вызвать rs.next(), прежде чем вы сможетеполучить доступ к результатам.В более общем случае вам нужно вызывать next n раз, чтобы просмотреть n-ую строку, и при результатах sql счет начинается с 1, а не с 0.

...