我想使用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方法,但我想存储两者 - 我的代码也无法正常工作; - )
如果有人能给我一些关于使用准备好的声明将组合日期时间(当前时间将是一个很大的帮助,因为这是我的第一个目标)的一些指针,我会非常感激。
由于
答案 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()));
}