gpt4 book ai didi

java sql - 将时间戳插入sql数据库

转载 作者:行者123 更新时间:2023-11-29 06:28:20 24 4
gpt4 key购买 nike

我正在尝试将时间戳插入数据库,但我的代码抛出异常,它告诉我它与我的 sql 语句有关。

显示的异常消息是:

"Fout in Rit_ToevoegenController.okKnop(): SQLException in RitDB.voegRitToe() - statement"

okKnop 是调用 voegRitToe() 的不同方法。

名为“starttijd”的列的类型是 TIMESTAMP,DB 数据类型是 DateTime。

我相当确定是时间戳导致了问题,因为其他 2 个只是一个字符串和一个整数。

如能提供帮助使其正常工作,我们将不胜感激。我需要将时间和日期都插入到数据库中,以便稍后进行比较。

public void voegRitToe(Rit r) throws DBException{
Timestamp starttijd = new Timestamp(System.currentTimeMillis());
//Date date = new Date(starttijd.getTime());

try(Connection conn = ConnectionManager.getConnection();){
try(PreparedStatement stmt = conn.prepareStatement("insert into rit(starttijd, lid_rijksregisternummer, fiets_registratienummer) values(?,?,?)");){
stmt.setTimestamp(1, starttijd);
stmt.setString(2, r.getLid().getRegisterNr());
stmt.setInt(3, r.getFiets().getRegisNr());
stmt.execute();
}
catch(SQLException sqlEx){
throw new DBException("SQLException in RitDB.voegRitToe() - statement");
}

}
catch(SQLException sqlEx){
throw new DBException("SQLException in RitDB.voegRitToe() - verbinding");
}
}

enter image description here

最佳答案

TIMESTAMP 和 DATETIME 有不同的用途; TIMESTAMP 用于自动时间戳。

java.util.Date starttijd = new java.util.Date(System.currentTimeMillis());
java.util.Date starttijd = new java.util.Date(); // Or this

我猜你是在 Timestamp 来的,因为 java.sql.Date 通过将时间部分设置为零来包装 java.util.Date!

如果数据库服务器的时间是正确的,还可以这样做:

... VALUES(NOW(), ?, ?)

顺便说一下,java 8 引入了新的日期/时间类并“改进”了 JDBC 的使用,如果您有一个 java 8 兼容的驱动程序的话。

关于java sql - 将时间戳插入sql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29493957/

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