gpt4 book ai didi

java - 将 LocalDateTime 保存到 DB2 TIMESTAMP 列中

转载 作者:行者123 更新时间:2023-12-02 02:58:47 26 4
gpt4 key购买 nike

我一直在尝试将 LocalDateTime 持久保存到 DB2 10.5 中的 TIMESTAMP 列中,但失败并出现错误:

[jcc][1091][10824][4.26.14] Invalid data conversion: Parameter instance 2020-01-02T12:34:56 is invalid for the requested conversion. ERRORCODE=-4461, SQLSTATE=42815

我正在使用 IBM JDBC 驱动程序:实现 JDBC 规范 4.1 的“JDBC 驱动程序 IBM Data Server Driver for JDBC and SQLJ 4.26.14”。

表定义为:

create table t1 (
id int,
a timestamp
);

Java代码是:

LocalDateTime dt = LocalDateTime.of(2020, 1, 2, 12, 34, 56);
PreparedStatement ps = conn.prepareStatement(
"insert into t1 (id, a) values (?, ?)"
);
int id = 1;
ps.setInt(1, id);
ps.setObject(2, dt); // fails here
ps.execute();

我可以看到它甚至没有到达 ps.execute() 方法。我读到 JDBC 4.2 驱动程序可能会解决此问题,但我在任何地方都找不到它。

最佳答案

根据Data types that map to database data types in Java applications主题,您应该使用 java.sql.Timestamp 处理 TIMESTAMP 表列。

表 1. 用于更新数据库表的 Java 数据类型到数据库服务器数据类型的映射

Java data type      Database data type
------------------ ------------------
...
java.sql.Timestamp TIMESTAMP, ...

关于java - 将 LocalDateTime 保存到 DB2 TIMESTAMP 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60467668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com