Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die Einfügungs-ID nach der Verwendung von JDBC ab?

Wie rufe ich die Einfügungs-ID nach der Verwendung von JDBC ab?

Linda Hamilton
Linda HamiltonOriginal
2025-01-23 19:08:17900Durchsuche

How to Retrieve the Insert ID After Using JDBC?

Zugriff auf neu eingefügte Datensatz-IDs mit JDBC

Diese Anleitung beschreibt, wie Sie die automatisch generierte ID nach dem Einfügen eines Datenbankeintrags mithilfe von JDBC abrufen. Abhängig von Ihrem Datenbanksystem gibt es mehrere Ansätze.

Hebelwirkung Statement#getGeneratedKeys()

Für Datenbanken, die automatisch generierte Schlüssel unterstützen, bietet die Methode Statement#getGeneratedKeys() eine unkomplizierte Lösung. Diese Methode gibt ein ResultSet zurück, das die generierten Schlüssel enthält. Entscheidend ist, dass Sie den JDBC-Treiber anweisen, diese Schlüssel zurückzugeben, indem Sie bei der Vorbereitung der Anweisung Statement.RETURN_GENERATED_KEYS angeben.

Anschauliches Beispiel:

<code class="language-java">try (
    Connection connection = dataSource.getConnection();
    PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
                               Statement.RETURN_GENERATED_KEYS);
) {
    // Set statement parameters
    // ...

    int affectedRows = statement.executeUpdate();

    if (affectedRows == 0) {
        throw new SQLException("Record insertion failed, no rows affected.");
    }

    try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
        if (generatedKeys.next()) {
            user.setId(generatedKeys.getLong(1));
        } else {
            throw new SQLException("Record insertion failed, no ID obtained.");
        }
    }
}</code>

Datenbankspezifische Alternativen

Es ist wichtig zu beachten, dass Statement#getGeneratedKeys() nicht allgemein von allen JDBC-Treibern unterstützt wird. Für bestimmte Datenbanksysteme gibt es alternative Methoden:

  • Oracle: Verwenden Sie ein CallableStatement mit einer RETURNING-Klausel oder führen Sie eine SELECT CURRVAL(sequencename)-Abfrage nach dem Einfügevorgang aus.
  • MySQL und DB2: Diese Datenbanken unterstützen im Allgemeinen Statement#getGeneratedKeys().
  • PostgreSQL: Neuere Versionen bieten Unterstützung für Statement#getGeneratedKeys().
  • MSSQL: Die Unterstützung variiert je nach Treiberversion; Sehen Sie in der Dokumentation Ihres Fahrers nach, welche Methode geeignet ist.

Das obige ist der detaillierte Inhalt vonWie rufe ich die Einfügungs-ID nach der Verwendung von JDBC ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn