Il modo corretto per recuperare la tua chiave primaria è utilizzare getGeneratedKeys
facility (attivabile tramite la Statement.RETURN_GENERATED_KEYS
valore con uno dei Statement.execute*
o Connection.prepareStatement
metodi.
Nella maggior parte dei database questo può essere utilizzato per recuperare direttamente la chiave primaria. Nel caso di Oracle invece questo ti permetterà di ottenere il ROWID
, questo ROWID
può essere utilizzato per interrogare la tabella per la riga inserita e ottenere la chiave primaria.
Ad esempio:
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);
}
}
}