,一些JDBC驅動程序返回Statement.RETURN_GENERATED_KEYS
唯一的辦法就是做以下的事情:的PreparedStatement用是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
String中看不到它。
現在,我使用PreparedStatement.setXXXX(index, value)
填充?
。我想返回ResultSet rs = PreparedStatement.getGeneratedKeys()
。我怎樣才能做到這一點?
您是否嘗試過這樣的:由於沒有通過我一個編譯器
很多人誤解和利用PreparedStatement#的executeUpdate(ARG)。 Java doc說'這個帶參數的方法不能在PreparedStatement或CallableStatement上調用。這意味着我們必須使用不帶參數的executeUpdate(),即使'PrepaUpStatement類中可以繼承'executeUpdate(arg)'方法但我們沒有使用它,否則我們會得到SQLException。 – AmitG 2015-01-08 17:33:46