일부 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
표 A 거기 PRIMARY KEY (USER_ID)
a는이다 BIGINT AUTOINCREMENT
(따라서 왜 당신은 그것을 볼 수 없습니다 SQL_CREATE
문자열.
이제 ?
사용하여 PreparedStatement.setXXXX(index, value)
. 나는 돌아가고 싶다 ResultSet rs = PreparedStatement.getGeneratedKeys()
. 어떻게하면 되나요?
This method with argument cannot be called on a PreparedStatement or CallableStatement.
있지만 인수없이 executeUpdate ()를 사용해야executeUpdate(arg)
하지만 사용할 필요가 없습니다. 그렇지 않으면 SQLException이 발생합니다.