De juiste manier om uw primaire sleutel op te halen, is door de getGeneratedKeys
. te gebruiken faciliteit (die kan worden geactiveerd met behulp van de Statement.RETURN_GENERATED_KEYS
waarde met een van de Statement.execute*
of Connection.prepareStatement
methoden.
In de meeste databases kan dit worden gebruikt om de primaire sleutel direct op te halen. In het geval van Oracle zal dit u echter toelaten om de ROWID
. te verkrijgen , deze ROWID
kan worden gebruikt om de tabel voor de ingevoegde rij te doorzoeken en de primaire sleutel te verkrijgen.
Bijvoorbeeld:
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);
}
}
}