一些JDBC驱动程序返回的唯一方法Statement.RETURN_GENERATED_KEYS
是执行以下操作:
long key = -1L;
Statement statement = connection.createStatement();
statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();
if (rs != null && rs.next()) {
key = rs.getLong(1);
}
有没有办法做到这一点PreparedStatement
?
编辑
我询问是否可以PreparedStatement
通过以下情况进行相同操作的原因:
private static final String SQL_CREATE =
"INSERT INTO
USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB)
VALUES (?, ?, ?, ?, ?)";
在USER
表中有一个PRIMARY KEY (USER_ID)
是一个BIGINT AUTOINCREMENT
(所以为什么你没有看到它的SQL_CREATE
字符串。
现在,我填充?
using PreparedStatement.setXXXX(index, value)
。我想回来ResultSet rs = PreparedStatement.getGeneratedKeys()
。我该如何实现?
This method with argument cannot be called on a PreparedStatement or CallableStatement.
这意味着即使executeUpdate(arg)
方法可以在PreparedStatement类中继承,我们也必须使用不带参数的executeUpdate(),但是我们不必使用它,否则会得到SQLException。