」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 JDBC 資料庫中插入和檢索 java.time.LocalDate 物件?

如何在 JDBC 資料庫中插入和檢索 java.time.LocalDate 物件?

發佈於2025-01-14
瀏覽:536

How to Insert and Retrieve java.time.LocalDate Objects in JDBC Databases?

在SQL 資料庫中插入和取得java.time.LocalDate 物件(如H2)

問題: 如何處理java.time 類型類似於透過JDBC 使用SQL 資料庫的LocalDate,例如H2?

Legacy方法: 使用PreparedStatement::setDate 和ResultSet::getDate 適用於過時的java.sql.Date 類型。但是,最好避免這些有問題的遺留類別。

現代方法: 主要有兩條路線:

  1. JDBC 4.2 相容驅動程式: 如果JDBC 驅動程式支援JDBC 4.2 或更高版本,則可以直接使用java.time 物件。這些驅動程式具有用於資料類型轉換的 setObject 和 getObject 方法。
  2. 舊版驅動程序,Pre-JDBC 4.2: 對於 JDBC 4.2 之前的驅動程序,臨時將 java.time 物件轉換為其 java.sql 等效項反之亦然。使用新增到舊類別中的新轉換方法。

使用 JDBC 4.2 相容驅動程式的範例:

// Insert LocalDate as SQL DATE
preparedStatement.setObject(1, myLocalDate);

// Retrieve LocalDate from SQL DATE
LocalDate localDate = myResultSet.getObject("my_date_column", LocalDate.class);

使用非相容驅動程式範例:

// Convert LocalDate to java.sql.Date for insertion
java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate);
preparedStatement.setDate(1, mySqlDate);

// Convert java.sql.Date to LocalDate after retrieval
LocalDate localDate = mySqlDate.toLocalDate();

建議: 盡可能使用符合 JDBC 4.2 的方法。它更簡單且類型安全。但是,不相容的方法仍然可以用於不支援 JDBC 4.2 的驅動程式。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3