我知道 JDBC 4.2 驱动程序支持读取和写入 java.time 对象。我尝试使用 MariaDB 2.6 驱动程序存储和检索 Instant 对象。我正在使用 Apache Commons DB Utils 运行查询。
我可以很好地存储 Instant,但无法检索它们。这是驱动程序的错误还是我做错了什么?
存储和读取代码
String sql = "insert into TimeTest(time) values(?)";
Instant ts = Instant.from(Instant.now());
sqlQueryRunner.update(dbConnection,sql, ts);
ResultSetHandler<Instant[]> h = new ResultSetHandler<Instant[]>() {
public Instant[] handle(ResultSet rs) throws SQLException {
if (!rs.next()) {
return null;
}
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount();
Instant[] result = new Instant[cols];
for (int i = 0; i < cols; i++) {
**//Does not work**
//result[i] = rs.getObject(i+1, Instant.class);
**//works fine**
result[i] = rs.getObject(i+1, Timestamp.class).toInstant();
}
return result;
}
};
TimeTest 是一个具有日期时间字段时间的表:
CREATE TABLE `TimeTest` (
`time` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
读取 Instant 时出错
Caused by: java.sql.SQLException: Type class 'java.time.Instant' is not supported