我正在使用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浏览器中它执行时没有发生任何事故。
谢谢, 布赖恩
答案 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