Primärschlüssel aus der eingefügten Zeile jdbc?
Gibt es eine cross-Datenbank-Plattform-Weg, um den Primärschlüssel des Datensatzes, die Sie gerade eingegeben haben?
Bemerkte ich, dass diese Antwort sagt, dass Sie es durch Aufrufen SELECT LAST_INSERT_ID()
und ich denke, dass Sie anrufen können SELECT @@IDENTITY AS 'Identity';
gibt es einen gemeinsamen Weg, dies zu tun durch Datenbanken jdbc?
Falls nicht, wie würden Sie vorschlagen, implementiere ich diese für ein Stück code, das könnte den Zugriff auf SQL Server, MySQL und Oracle?
InformationsquelleAutor der Frage Omar Kooheji | 2008-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kopiert aus meinem code:
wo pInsertOid ist eine vorbereitete Anweisung.
dann erhalten Sie den Schlüssel:
Hoffe, das gibt Ihnen einen guten Ausgangspunkt.
InformationsquelleAutor der Antwort extraneon
extraneon Antwort, obwohl korrekt, funktioniert nicht für Oracle.
Die Art und Weise Sie dies tun, für Oracle ist:
InformationsquelleAutor der Antwort atripathi
Haben Sie versucht, die - Anweisung.executeUpdate() und - Anweisung.getGeneratedKeys() Methoden? Es ist ein developerWorks Artikel erwähnt das der Ansatz.
Auch in JDBC 4.0-Sonne Hinzugefügt, die row_id-Funktion, die ermöglicht es Ihnen, einen einzigartigen Griff, der in einer Zeile. Das feature wird unterstützt von Oracle und DB2. Für sql server müssen Sie wahrscheinlich einen Dritten Fahrer, wie diese eine.
Glück!
InformationsquelleAutor der Antwort johnstok
für oracle, Hibernate verwendet NEXT_VALUE aus einer Sequenz wenn Sie zugeordnet haben, eine Sequenz für die PKEY-Wert-generation.
Nicht sicher, was es tut, für MySQL oder MS SQL server
InformationsquelleAutor der Antwort anjanb
Frühjahr bietet einige nützliche Unterstützung für dieser Vorgang und die Anleitung scheint deine Frage zu beantworten:
Ich habe getestet dieses Beispiel auf MySQL und es funktioniert dort auch, aber ich kann nicht sprechen für andere Plattformen.
InformationsquelleAutor der Antwort Dónal
Für Datenbanken, die konform zu SQL-99, können Sie die id-Spalten verwenden:
CREATE TABLE sometable (id INTEGER GENERATED ALWAYS AS IDENTITY(START WITH 101) PRIMARY KEY, ...
Verwenden getGeneratedKeys() zum abrufen der Schlüssel, der nur eingefügt wurde mit executeUpdate(String sql, int autoGeneratedKeys). Use-Anweisung.RETURN_GENERATED_KEYS für den 2. parameter executeUpdate()
InformationsquelleAutor der Antwort Jeff Miller
Nur erklären-id-Spalte als id integer not NULL primary key
auto_increment
nachdem dies diesen code ausführen, werden
der obige code zeigt Ihnen die aktuelle Zeile id
wenn Sie entfernen
ds.last()
als es zeigt alle Werte der id-SpalteInformationsquelleAutor der Antwort ANURAG SHARMA