JDBC는 JDBC를 통해 java.time 객체를 교환하는 두 가지 방법을 제공합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!