首頁 >Java >java教程 >如何在H2資料庫中使用JDBC處理java.time物件?

如何在H2資料庫中使用JDBC處理java.time物件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-31 19:02:11297瀏覽

How to Handle java.time Objects with JDBC in H2 Database?

與java.time 物件的JDBC 資料交換

問題:如何在我的物件中包含java. time 類型使用JDBC 的SQL 資料庫,特別是H2 資料庫引擎?

答案:有兩種方法可以透過JDBC 來協調與java.time 物件的資料交換:

符合JDBC 4.2 的驅動程式

  • 使用相容JDBC 4.2 或更高版本的JDBC驅動程序,您可以直接操作 java.time 物件。
  • JDBC 委員會合併了 setObject/getObject 方法來處理此問題,因此不再需要類似 setLocalDate/getLocalDate 的方法。
  • 要插入數據,請使用 setObject 方法您的 java.time 物件作為參數。
  • 對於資料檢索,請使用 getObject 方法以及預期的資料類型作為附加參數,確保類型安全。

不相容JDBC 4.2 的驅動程式

  • 對於尚未與JDBC 4.2 相容的JDBC 驅動程式,暫時在java.time 之間轉換和java.sql 類型。
  • 使用 java.sql.Date.valueOf 進行轉換LocalDate 到 java.sql.Date 進行插入。
  • 檢索時,使用其 toLocalDate 方法將擷取的 java.sql.Date 轉換為 LocalDate。

使用H2 的範例程式碼資料庫

JDBC 4.2符合

LocalDate today = LocalDate.now(ZoneId.of("America/Montreal"));

// Insert row
preparedStatement.setObject(1, today.minusDays(1));
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today);
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today.plusDays(1));
preparedStatement.executeUpdate();

// Retrieve data
LocalDate localDate = myResultSet.getObject("date_", LocalDate.class);
JDBC 4.2符合

JDBC 4.2符合

// Insert row
preparedStatement.setDate(1, java.sql.Date.valueOf(today));
preparedStatement.executeUpdate();

// Retrieve data
java.sql.Date sqlDate = myResultSet.getDate("date_");
LocalDate localDate = sqlDate.toLocalDate();

以上是如何在H2資料庫中使用JDBC處理java.time物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn