插入行 jdbc 中的主键?

2022-09-01 00:28:09

是否有跨数据库平台的方法来获取刚刚插入的记录的主键?

我注意到这个答案说你可以通过调用来获取它,我认为你可以调用是否有一种常用的方法可以在jdbc中的数据库中执行此操作?SELECT LAST_INSERT_ID()SELECT @@IDENTITY AS 'Identity';

如果不是,你会建议我为可以访问任何SQL Server,MySQL和Oracle的代码片段实现它?


答案 1

从我的代码复制:

pInsertOid = connection.prepareStatement(INSERT_OID_SQL, Statement.RETURN_GENERATED_KEYS);

其中 pInsertOid 是预准备语句。

然后,您可以获取密钥:

// fill in the prepared statement and
pInsertOid.executeUpdate();
ResultSet rs = pInsertOid.getGeneratedKeys();
if (rs.next()) {
  int newId = rs.getInt(1);
  oid.setId(newId);
}

希望这能给你一个好的起点。


答案 2

extraneon的答案虽然是正确的,但不适用于Oracle

对于 Oracle,您执行此操作的方法是:

String key[] = {"ID"}; //put the name of the primary key column

ps = con.prepareStatement(insertQuery, key);
ps.executeUpdate();

rs = ps.getGeneratedKeys();
if (rs.next()) {
    generatedKey = rs.getLong(1);
}

推荐