使用 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中文網其他相關文章!