首頁 > 資料庫 > mysql教程 > 使用 JDBC 後如何檢索插入 ID?

使用 JDBC 後如何檢索插入 ID?

Linda Hamilton
發布: 2025-01-23 19:08:17
原創
898 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板