如何使用从PreparedStatement.getGeneratedKeys()返回的RowId?

时间:2016-04-10 20:48:24

标签: java oracle jdbc prepared-statement rowid

我有以下代码。这是一个准备好的语句,请求返回生成的密钥。

在generatedKeys结果集中,唯一的返回列名为“ROWID”,value是RowId类的实例。请参见底部的screencap。

我的问题是如何使用行ID获取整行?

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

enter image description here

1 个答案:

答案 0 :(得分:0)

插入数据并获得rowid后,我可以使用super fastly提取整行,包括插入的生成值,例如DB过程插入的值。

使用rowid提取行的示例:

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