首页 >数据库 >mysql教程 >使用 JDBC 后如何检索插入 ID?

使用 JDBC 后如何检索插入 ID?

Linda Hamilton
Linda Hamilton原创
2025-01-23 19:08:17944浏览

How to Retrieve the Insert ID After Using JDBC?

使用 JDBC 访问新插入的记录 ID

本指南详细介绍了如何在使用 JDBC 插入数据库记录后检索自动生成的 ID。 存在多种方法,具体取决于您的数据库系统。

利用Statement#getGeneratedKeys()

对于支持自动生成键的数据库,Statement#getGeneratedKeys()方法提供了一个简单的解决方案。此方法返回包含生成的密钥的 ResultSet。 至关重要的是,您必须在准备语句时指定 Statement.RETURN_GENERATED_KEYS 来指示 JDBC 驱动程序返回这些键。

说明性示例:

<code class="language-java">try (
    Connection connection = dataSource.getConnection();
    PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
                               Statement.RETURN_GENERATED_KEYS);
) {
    // Set statement parameters
    // ...

    int affectedRows = statement.executeUpdate();

    if (affectedRows == 0) {
        throw new SQLException("Record insertion failed, no rows affected.");
    }

    try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
        if (generatedKeys.next()) {
            user.setId(generatedKeys.getLong(1));
        } else {
            throw new SQLException("Record insertion failed, no ID obtained.");
        }
    }
}</code>

特定于数据库的替代方案

需要注意的是,并非所有 JDBC 驱动程序都普遍支持 Statement#getGeneratedKeys()。 对于特定的数据库系统存在替代方法:

  • Oracle: 使用带有 CallableStatement 子句的 RETURNING,或在插入操作后执行 SELECT CURRVAL(sequencename) 查询。
  • MySQL和DB2:这些数据库一般都支持Statement#getGeneratedKeys()
  • PostgreSQL:最新版本提供对Statement#getGeneratedKeys()的支持。
  • MSSQL:支持因驱动程序版本而异;检查您的驱动程序文档以了解适当的方法。

以上是使用 JDBC 后如何检索插入 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn