首页 >Java >java教程 >如何在 JDBC 数据库中插入和检索 java.time.LocalDate 对象?

如何在 JDBC 数据库中插入和检索 java.time.LocalDate 对象?

Barbara Streisand
Barbara Streisand原创
2024-12-20 08:53:10208浏览

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

向 SQL 数据库(如 H2)插入和获取 java.time.LocalDate 对象

问题:如何处理 java.time 类型就像通过 JDBC 使用 SQL 数据库的 LocalDate 一样,例如H2?

传统方法: 使用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 的驱动程序。

以上是如何在 JDBC 数据库中插入和检索 java.time.LocalDate 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn