使用 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()
。 对于特定的数据库系统存在替代方法:
CallableStatement
子句的 RETURNING
,或在插入操作后执行 SELECT CURRVAL(sequencename)
查询。Statement#getGeneratedKeys()
。Statement#getGeneratedKeys()
的支持。以上是使用 JDBC 后如何检索插入 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!