获取标识主键的最新插入值

Posted

技术标签:

【中文标题】获取标识主键的最新插入值【英文标题】:Get the latest inserted value for an identity primary key 【发布时间】:2013-05-27 16:32:03 【问题描述】:

我有一个Statement,我在其中向我的数据库中的一个表插入一些值,该表有一个主键,它的名称是:numBon

当我执行插入命令时,我想得到numBon的值。

现在我正在使用这段代码:

Statement st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT MAX(numBon) FROM BonInterne");
int numBon;
if (result.next()) 
            numBon = result.getInt("numBon");
        

就没有别的办法了吗?

【问题讨论】:

***.com/questions/4246646/… 我认为这会有所帮助 【参考方案1】:

使用Statement.getGeneratedKeys() 检索自动生成的值。

Statement st = connection.createStatement();
st.execute("insert into ... "); //query where the server generates a value for
                                 //an auto incremented column
ResultSet rs = st.getGeneratedKeys
int numBon;
if (rs.next())  
  numBon = result.getInt(1);

【讨论】:

【参考方案2】:

这是一个自动增量列吗?假设是,您可以这样做:

SELECT LAST_INSERT_ID()

但这与数据库无关。 This article gives a much better answer. 或者您可以查看@eidsonator 的评论以更快地了解如何从插入语句中获取ID。

【讨论】:

以上是关于获取标识主键的最新插入值的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 主表主键自增量,如何获取主键呢?

在 SQL Server CE 和 C# 中获取新插入行的主键?

在表中插入主键的问题

方镁石。插入后如何获取自动增量主键的值,除了last_insert_rowid()?

主键和外键的作用

多值主键对象的良好数据结构是啥?