使用java将日期时间插入数据库

时间:2010-06-05 11:07:37

标签: java mysql datetime prepared-statement

我想使用Java和预准备语句将日期时间插入到MySql数据库中:

Calendar cal = Calendar.getInstance();
PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " +
                       "(Time) VALUE (?) ");
    stmnt.setDate(1, new java.sql.Date(cal.getTime()));
    stmnt.executeQuery();  

注意:目前有错误 - 找不到符号(java.sql.Date)第4行

db是一种包装类的实例,它从java.sql中公开了我需要的内容 - 它只是从我的连接对象中获取一个预准备语句。

时间(列)是我的数据库中的日期时间,我只能看到setDate和setTime方法,但我想存储两者 - 我的代码也无法正常工作; - )

如果有人能给我一些关于使用准备好的声明将组合日期时间(当前时间将是一个很大的帮助,因为这是我的第一个目标)的一些指针,我会非常感激。

由于

2 个答案:

答案 0 :(得分:5)

java.sql.Date的构造函数需要很长时间(自1970年以来的毫秒)java.sql.Date 要从java.uitl.Calendar获取毫秒,请使用cal.getTimeInMillis()

您的代码将是:

Calendar cal = Calendar.getInstance();
PreparedStatement stmnt = db.PreparedStatement("INSERT INTO Run " + "(Time) VALUE (?) ");
stmnt.setDate(1, new java.sql.Date(cal.getTimeInMillis()));
stmnt.executeQuery();

答案 1 :(得分:2)

以下代码应允许您插入精度为毫秒级的日期。我已经将它与HSQLDB,Sybase,SQL-Server和MySql一起使用,没有任何问题。

java.util.Date date = getMyDate();
if (date == null) {
    statement.setNull(insertionIndex, Types.TIMESTAMP);
} else {
    statement.setTimestamp(insertionIndex, new Timestamp (date.getTime()));
}