sql >> Databasteknik >  >> RDS >> Oracle

Java JDBC Primary Key Oracle Database

Det korrekta sättet att hämta din primärnyckel är att använda getGeneratedKeys facilitet (som kan aktiveras genom att använda Statement.RETURN_GENERATED_KEYS värde med en av Statement.execute* eller Connection.prepareStatement metoder.

I de flesta databaser kan detta användas för att hämta primärnyckeln direkt. I fallet med Oracle kommer detta dock att tillåta dig att få ROWID , denna ROWID kan användas för att fråga tabellen för den infogade raden och erhålla primärnyckeln.

Till exempel:

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


  1. Anslut genom klausul för att få toppen av hierarkin

  2. Ställ in timeout för Oracle 10g databasanslutning i Java

  3. Rätt sätt att använda LIKE '%{$var}%' med förberedda uttalanden? [mysqli]

  4. Skillnad mellan CLOB och BLOB från DB2 och Oracle Perspective?