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

时间:2011-06-04 14:25:03

标签: java jdbc

我想在数据库中插入日期,但它不会显示任何出现的错误消息。当我在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
}

它有效。

1 个答案:

答案 0 :(得分:15)

下面,

values('"+daterecep+"')

您基本上是在尝试将daterecep.toString()的结果存储在数据库中。根据{{​​3}},格式如“Sat Jun 6 10:43:00 BOT 2011”(这取决于区域设置和时区!)。数据库不理解它。

您应该使用documentation在数据库中设置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还可以使您免于PreparedStatement#setTimestamp()

另见: