ホームページ >データベース >mysql チュートリアル >JDBC を使用した後に挿入 ID を取得するにはどうすればよいですか?

JDBC を使用した後に挿入 ID を取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-23 19:08:17902ブラウズ

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>

データベース固有の代替手段

Statement#getGeneratedKeys() はすべての JDBC ドライバーで普遍的にサポートされているわけではないことに注意することが重要です。 特定のデータベース システムには代替方法が存在します:

  • Oracle: CallableStatement 句を含む RETURNING を使用するか、挿入操作の後に SELECT CURRVAL(sequencename) クエリを実行します。
  • MySQL および DB2: これらのデータベースは通常、Statement#getGeneratedKeys() をサポートします。
  • PostgreSQL: 最近のバージョンでは、Statement#getGeneratedKeys().
  • のサポートが提供されています。
  • MSSQL: サポートはドライバーのバージョンによって異なります。適切な方法については、ドライバーのドキュメントを確認してください。

以上がJDBC を使用した後に挿入 ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。