我正在为我的应用程序使用MS-Access数据库。现在我想将当前日期存储在JAVA的DB中。以下代码段将日期数据存储在数据库中,但它存储的值不正确:6/6/1905。 MS-Access中的数据类型是日期/时间。我使用以下代码段来设置当前日期:
data.setModifyDate(new Date(new java.util.Date().getTime()));
modifyDate的类型是java.sql.Date。 插入查询如下:
String query = "INSERT INTO testTable(id, tName, modifyDate ) " +
" VALUES ("+"'"+data.getId()+"'"+","
+"'"+data.getTName()+"'"+","
+data.getModifyDate()+")";
Statement s = conn.createStatement();
s.execute(query);
MS-Access 2007不支持TimeStamp。那么,如何存储正确的日期值?
答案 0 :(得分:2)
如果使用参数化查询来执行INSERT(在任何情况下你真的应该这样做),你可以使用Timestamp
。以下代码适用于我:
import java.sql.*;
public class jdbcTest {
public static void main(String[] args) {
try {
Connection conn = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
"Dbq=C:\\__tmp\\Database1.accdb;");
PreparedStatement s = conn.prepareStatement(
"INSERT INTO testTable (id, tName, modifyDate) VALUES (?, ?, ?)");
s.setString(1, "foo");
s.setString(2, "bar");
s.setTimestamp(3, new Timestamp(new java.util.Date().getTime()));
s.execute();
s.close();
conn.close();
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}
答案 1 :(得分:1)
您正在尝试插入由Date的Date类打印的日期/时间。 我认为MSAccess需要它的日期/时间为#YYYY-MM-DD HH:MM:SS#所以尝试使用SimpleDateFormat在插入查询中使用正确的格式。
希望这有帮助。