2016-04-10 11 views
0

Ich habe den Code unten. Es ist eine vorbereitete Anweisung mit einer Anforderung, die generierten Schlüssel zurückzugeben.Wie verwendet man eine von PreparedStatement.getGeneratedKeys() zurückgegebene RowId?

In der generatedKeys-Ergebnismenge hat die einzige zurückgegebene Spalte den Namen "ROWID" und value ist eine Instanz der RowId-Klasse. Siehe Screencap am unteren Rand.

Meine Frage ist Wie verwende ich die Zeilen-ID, um die ganze Zeile zu bekommen?

preparedStatement = conn.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS); 
SqlUtils.addParams(preparedStatement, params); 
preparedStatement.executeUpdate(); 
ResultSet generatedKeys = preparedStatement.getGeneratedKeys(); 

enter image description here

+0

Hat man sich Oracle Dokumentation [Mit RowId Objekte] (https://docs.oracle.com/javase/tutorial/jdbc/basics/ sqlrowid.html)? –

+1

Die Frage nicht direkt beantworten, aber [diese] (http://stackoverflow.com/a/32114047/266304) könnte etwas relevant sein? –

Antwort

0

Nachdem ich die Daten eingefügt, und bekam die rowid kann ich es super fastly extrahieren die gesamte Reihe, verwenden, um die erzeugten Werte einschließlich, die eingefügt wurden, um Werte weise durch einen DB eingefügt Verfahren.

Beispiel die Rowid der Verwendung der Zeile zu extrahieren:

Object rowId = generatedKeys.getObject(1); 
String tableName = generatedKeys.getMetaData().getTableName(1); 
List<Map<String, Object>> resAsList = select(conn, "select * from " + tableName + " where rowid=?", rowId); 
Verwandte Themen