SQL java获取分配给自动递增主键的值[重复]

Posted

技术标签:

【中文标题】SQL java获取分配给自动递增主键的值[重复]【英文标题】:SQL java get value assigned to auto increment primary key [duplicate] 【发布时间】:2011-02-20 15:17:24 【问题描述】:

我的表中有一个主键自动递增属性。我想知道为使用 statement.executeUpdate() 插入的行分配的值。如何以最佳方式实现这一目标?

【问题讨论】:

对于什么数据库?您可以对 Oracle/DB2(可能还有 Postgres)使用 RETURNING 子句; mysql 的 LAST_INSERT_ID; @SCOPE_IDENTITY 用于 SQL Server... @OMGPonies:JDBC 抽象了数据库实现这一点的方式(当数据库支持时)。 【参考方案1】:

使用Statement#getGeneratedKeys()Statement#executeUpdate(String, int)(这是 JDBC 3.0 功能,您的数据库必须支持 JDBC 3.0)。

这是一个返回 ResultSet 的示例,其中包含 TABLE1 中自动生成的列的值:

Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("INSERT INTO TABLE1 (C11, C12) VALUES (1,1)", Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();

【讨论】:

我在调用 rs.getInt("id"); 时收到一条错误消息,提示找不到列 ID可能是什么原因? 相关的东西。 bugs.mysql.com/bug.php?id=18409 但即使这样也不能解决问题 我的列的数据类型为 int(11)。我正在使用 mysql @iamrohitbanga 您是否尝试通过索引rs.getInt(1); 检索列? 是的,我做到了。我仍然有一个例外。我在这里发布了一个新问题。 ***.com/questions/2854774/…

以上是关于SQL java获取分配给自动递增主键的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取数据表中自增主键的值

mybatis记录随便保存数据获取自增主键的值

SQL中主键的使用

怎么用SQL语句CREATE TABLE的主键为“自动增加”

如何将数据插入具有自动递增主键的 MySQL?

UUID 与主键的自动递增数