使用JDBC for MySQL 5.1的getGeneratedKeys()上的奇怪异常

时间:2009-05-13 00:05:57

标签: java mysql jdbc

我正在使用JDBC将行插入MYSQL数据库。我构建一个参数化命令,执行它并尝试检索自动生成的键,如下所示:

String sql = "INSERT IGNORE INTO `users` (`email`, `pass-hash`) VALUES (?, ?)";
Connection conn = SQLAccess.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, login);
ps.setString(2, passHash);

int count = ps.executeUpdate();

if (count == 1) {
    ResultSet rs = ps.getGeneratedKeys();
    rs.next();
         //some more stuff...
}

出于某种原因,我在包含ResultSet rs = ps.getGeneratedKeys();的行上得到以下SQLException:

  

!Statement.Generated Keys Not   请求!

有什么想法?当我运行相同的查询时,通过调试器运行应用程序生成的查询,在MySQL浏览器中它执行时没有发生任何事故。

谢谢, 布赖恩

2 个答案:

答案 0 :(得分:5)

我想你想打电话给prepareStatement(sql, RETURN_GENERATED_KEYS)

答案 1 :(得分:0)

方法getGeneratedKeys()在JDBC 3.0 API中,并不适用于所有平台。

PreparedStatement没有getGenerateKeys()的工具,它只在Statement中,是一个抽象方法。

以下是有关此方法问题的主题:http://forums.sun.com/thread.jspa?threadID=260818