> Java > java지도 시간 > JDBC를 사용하여 java.time 객체를 삽입하고 검색하는 방법은 무엇입니까?

JDBC를 사용하여 java.time 객체를 삽입하고 검색하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-02 15:55:39
원래의
931명이 탐색했습니다.

How to Insert and Retrieve java.time Objects Using JDBC?

JDBC를 사용하여 java.time 객체 삽입 및 검색

JDBC는 JDBC를 통해 java.time 객체를 교환하는 두 가지 방법을 제공합니다.

JDBC 4.2 호환 드라이버

JDBC 4.2 호환 드라이버를 사용하면 변환 없이 java.time 객체와 직접 상호 작용할 수 있습니다.

삽입: setObject를 사용하여 java.time 객체를 전달하세요. 드라이버는 이를 적절한 SQL 유형(예: LocalDate에서 SQL DATE로)으로 자동 변환합니다.

검색: 먼저 인수 없이 getObject를 두 번 호출하여 값을 객체로 검색한 다음 유형 안전성에 대한 인수로 예상되는 클래스.

비준수 드라이버

JDBC 4.2를 지원하지 않는 드라이버의 경우 다음을 사용하여 java.time과 java.sql 유형 간에 변환할 수 있습니다. 코드:

삽입:

LocalDate date = ...;
java.sql.Date sqlDate = java.sql.Date.valueOf(date);
preparedStatement.setDate(1, sqlDate);
로그인 후 복사

검색:

java.sql.Date sqlDate = resultSet.getDate(1);
LocalDate date = sqlDate.toLocalDate();
로그인 후 복사

H2 예시

JDBC 사용 4.2(H2 포함):

try {
    Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

try (
    Connection conn = DriverManager.getConnection("jdbc:h2:mem:mydb");
    Statement stmt = conn.createStatement();
) {
    String sql = "CREATE TABLE test (id UUID, date DATE);";
    stmt.execute(sql);

    LocalDate today = LocalDate.now();
    sql = String.format("INSERT INTO test (id, date) VALUES (%s, %s)", UUID.randomUUID(), today);
    stmt.executeUpdate(sql);

    sql = "SELECT id, date FROM test";
    try (ResultSet rs = stmt.executeQuery(sql)) {
        while (rs.next()) {
            UUID id = rs.getObject("id", UUID.class);
            LocalDate date = rs.getObject("date", LocalDate.class);
            System.out.println(String.format("id: %s, date: %s", id, date));
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}
로그인 후 복사

비호환 드라이버의 예

H2와 함께 비JDBC 4.2 사용:

try {
    Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

try (
    Connection conn = DriverManager.getConnection("jdbc:h2:mem:mydb");
    Statement stmt = conn.createStatement();
) {
    String sql = "CREATE TABLE test (id UUID, date DATE);";
    stmt.execute(sql);

    LocalDate today = LocalDate.now();
    java.sql.Date sqlDate = java.sql.Date.valueOf(today);
    sql = String.format("INSERT INTO test (id, date) VALUES (%s, %s)", UUID.randomUUID(), sqlDate);
    stmt.executeUpdate(sql);

    sql = "SELECT id, date FROM test";
    try (ResultSet rs = stmt.executeQuery(sql)) {
        while (rs.next()) {
            UUID id = (UUID) rs.getObject("id");
            java.sql.Date date = rs.getDate("date");
            LocalDate localDate = date.toLocalDate();
            System.out.println(String.format("id: %s, date: %s", id, localDate));
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}
로그인 후 복사

위 내용은 JDBC를 사용하여 java.time 객체를 삽입하고 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿