Oracle
 sql >> Database >  >> RDS >> Oracle

Database Oracle con chiave primaria Java JDBC

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);
        }
    }
}