>데이터 베이스 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.