【问题标题】:Strange Exception on getGeneratedKeys() with JDBC for MySQL 5.1使用 JDBC for MySQL 5.1 的 getGeneratedKeys() 出现奇怪异常
【发布时间】:2009-05-13 00:05:57
【问题描述】:

我正在使用 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 不是 已请求!

有什么想法吗?当我在 MySQL 浏览器中运行与通过调试器运行应用程序生成的相同查询时,它会毫无意外地执行。

谢谢, 布莱恩

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      getGeneratedKeys() 方法在 JDBC 3.0 API 中,并非在所有平台上都可用。

      而且 PreparedStatement 没有 getGenerateKeys() 的实现,它只是在 Statement 中,是一个抽象方法。

      这里有一个关于这个方法问题的话题:http://forums.sun.com/thread.jspa?threadID=260818

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 2013-08-13
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多