gpt4 book ai didi

java - 如何在数据库中插入 java.util.Date?

转载 作者:搜寻专家 更新时间:2023-11-01 04:05:02 25 4
gpt4 key购买 nike

我想在数据库中插入一个日期,但它不起作用,出现任何错误消息。当我在 Oracle DB 中查看我的表时,我找不到我插入的数据。

java.util.Date daterecep;
// getter and setter
public void setdaterecep( java.util.Date daterecep) {
this.daterecep=daterecep;
}
public java.util.Date getdaterecep() {
return daterecep;
}

    nt val=0;
try {
val = st.executeUpdate("insert into tabdate (date) values('"+daterecep+"')" );
} catch (SQLException ex) {
Logger.getLogger(Insertdate.class.getName()).log(Level.SEVERE, null, ex);
}

System.out.println(val);
return resultat;
}

我使用了 PreparedStatement 但它不起作用我只是尝试执行 Java 代码

val = st.executeUpdate("insert into tabdate(date) values('12/12/2004')");

并添加

public static void main (String args[]) throws SQLException {

Insertdate B= new Insertdate();
B.connexionBD();
B.insert();//function for the insertion
}

而且有效。

最佳答案

这里,

values('"+daterecep+"')

您基本上是在尝试将 daterecep.toString() 的结果存储在数据库中。根据 documentation它的格式类似于“Sat Jun 6 10:43:00 BOT 2011”(取决于语言环境和时区!)。数据库不理解。

你应该使用 PreparedStatement#setTimestamp()在数据库中设置 DATETIME/TIMESTAMP 字段。

preparedStatement = connection.prepareStatement("insert into tabdate (date) values(?)" );
preparedStatement.setTimestamp(1, new Timestamp(daterecep.getTime()));
preparedStatement.executeUpdate();

或者当它实际上是一个 DATE 字段时,使用 setDate() 代替。

preparedStatement.setDate(1, new java.sql.Date(daterecep.getTime()));

作为奖励,PreparedStatement 还使您免于 SQL injection attacks .

另见:

关于java - 如何在数据库中插入 java.util.Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237276/

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