JDBC を使用した挿入 ID の取得: 包括的なガイド
挿入を伴うデータベース操作では、多くの場合、新しく挿入されたレコードの ID を取得することが重要です。この記事では、JDBC を使用してこれを実現する方法について、特に Microsoft SQL Server に焦点を当てた詳細なガイドを提供します。
挿入 ID 取得の JDBC サポート
JDBC は、Statement#getGeneratedKeys()
メソッドを通じて新しく挿入されたレコードの ID を取得する便利なメカニズムを提供します。このメソッドは、挿入された列に自動生成された値が含まれている場合にのみ使用できます。生成されたキーの取得を有効にするには、Statement.RETURN_GENERATED_KEYS
作成ステートメントを使用する必要があります。
Java サンプル コード
次のコード スニペットは、Java で JDBC を使用して挿入 ID を取得する方法を示しています。
<code class="language-java">public void create(User user) throws SQLException { try ( Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_INSERT, Statement.RETURN_GENERATED_KEYS); ) { statement.setString(1, user.getName()); statement.setString(2, user.getPassword()); statement.setString(3, user.getEmail()); int affectedRows = statement.executeUpdate(); if (affectedRows == 0) { throw new SQLException("创建用户失败,没有影响的行。"); } try (ResultSet generatedKeys = statement.getGeneratedKeys()) { if (generatedKeys.next()) { user.setId(generatedKeys.getLong(1)); } else { throw new SQLException("创建用户失败,未获得ID。"); } } } }</code>
JDBC 実装のニュアンス
Statement#getGeneratedKeys()
の有効性は、使用される JDBC ドライバーによって異なる場合があることに注意することが重要です。最新バージョンではこの機能がサポートされていますが、例外が存在する可能性があります。たとえば、Oracle の JDBC ドライバーでは、RETURNING
句を伴う CallableStatement
の使用が必要な場合があります。
Oracle の代替手段
Oracle データベースには代替手段が存在します。 1 つの方法は、RETURNING
句とともに CallableStatement
を使用することです。もう 1 つの方法は、INSERT 操作の後に SELECT CURRVAL(sequencename)
クエリを実行して、最後に生成されたキーを取得することです。
要約すると、JDBC は、レコードの挿入時に挿入 ID を取得するための信頼できるメカニズムを提供します。 Statement#getGeneratedKeys()
を活用することで、開発者は後続の処理やデータベース管理操作のために新しく生成された ID を効率的に取得できます。
以上がJDBC を使用して挿入 ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。