La bonne façon de récupérer votre clé primaire est d'utiliser le getGeneratedKeys
facilité (qui peut être activée en utilisant la Statement.RETURN_GENERATED_KEYS
value avec l'un des Statement.execute*
ou Connection.prepareStatement
méthodes.
Dans la plupart des bases de données, cela peut être utilisé pour récupérer directement la clé primaire. Dans le cas d'Oracle cependant cela vous permettra d'obtenir le ROWID
, ce ROWID
peut être utilisé pour interroger la table pour la ligne insérée et obtenir la clé primaire.
Par exemple :
stmt.executeUpdate("INSERT INTO theTable(column1) VALUES ('a')",
Statement.RETURN_GENERATED_KEYS);
ResultSet keys = stmt.getGeneratedKeys();
int primaryKey = -1;
if (keys.next()) {
try (PreparedStatement keyStatement =
connection.prepareStatement("SELECT ID FROM theTable WHERE ROWID = ?")) {
keyStatement.setRowId(keys.getRowId(1));
try (ResultSet rs = keyStatement.executeQuery()) {
primaryKey = rs.getInt(1);
}
}
}