插入行 jdbc 中的主键?
是否有跨数据库平台的方法来获取刚刚插入的记录的主键?
我注意到这个答案说你可以通过调用来获取它,我认为你可以调用是否有一种常用的方法可以在jdbc中的数据库中执行此操作?SELECT LAST_INSERT_ID()
SELECT @@IDENTITY AS 'Identity';
如果不是,你会建议我为可以访问任何SQL Server,MySQL和Oracle的代码片段实现它?
是否有跨数据库平台的方法来获取刚刚插入的记录的主键?
我注意到这个答案说你可以通过调用来获取它,我认为你可以调用是否有一种常用的方法可以在jdbc中的数据库中执行此操作?SELECT LAST_INSERT_ID()
SELECT @@IDENTITY AS 'Identity';
如果不是,你会建议我为可以访问任何SQL Server,MySQL和Oracle的代码片段实现它?
从我的代码复制:
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);
}
希望这能给你一个好的起点。
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);
}