是否有跨数据库平台方式来获取刚刚插入的记录的主键?
我注意到这个答案说你可以通过Calling得到它SELECT LAST_INSERT_ID()
,我认为你可以调用SELECT @@IDENTITY AS 'Identity';
有一种常见的方法在jdbc中的数据库中做这个吗?
如果不是,你会如何建议我为一段可以访问任何SQL Server,MySQL和Oracle的代码实现这个?
发布于 2019-05-21 08:26:58
复制自我的代码:
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);
}
希望这能为您提供一个良好的起点。
发布于 2019-05-21 10:06:39
您是否尝试过Statement.executeUpdate()和Statement.getGeneratedKeys()方法?有一篇developerWorks文章提到了这种方法。
此外,在JDBC 4.0中,Sun添加了row_id功能,该功能允许您在一行上获得唯一句柄。Oracle和DB2支持该功能。对于sql server,您可能需要第三方驱动程序,例如此驱动程序。
祝好运!
https://stackoverflow.com/questions/-100001169
复制相似问题