2010-11-07 48 views
0

我曾经执行过这个查询,没有任何问题,但是最近我一直有例外。java:Statement.RETURN_GENERATED_KEYS Err:S1000 Exp:结果集开始前

(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

你需要to get to the first result之前,你可以开始寻找在它的项目。

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

+0

非常感谢! :) – ufk 2010-11-07 16:14:37

+1

@ufk:没有概率 - 我在这里实际学到了这个问题的答案,提出了我自己的类似问题。当你看到它出现时,一定要放弃! – Carl 2010-11-07 16:17:12

相关问题