使用java JDBC在MS Access DB(MDB)中添加时间戳值

使用java JDBC在MS Access DB(MDB)中添加时间戳值,java,ms-access,jdbc,Java,Ms Access,Jdbc,我试图在表中插入新行,该表的时间戳为列值。 以下是我的代码: long millisecs = System.currentTimeMillis() ; Timestamp ts = new java.sql.Timestamp(millisecs) ; s.executeUpdate("INSERT INTO tblPublicHols(Date) VALUES("+ts+")"); 我还试着通过以下方式进行准备: long millisecs = System.currentTimeMil

我试图在表中插入新行,该表的时间戳为列值。 以下是我的代码:

long millisecs = System.currentTimeMillis() ;
Timestamp ts = new java.sql.Timestamp(millisecs) ;
s.executeUpdate("INSERT INTO tblPublicHols(Date) VALUES("+ts+")");
我还试着通过以下方式进行准备:

long millisecs = System.currentTimeMillis() ;
Timestamp ts = new java.sql.Timestamp(millisecs) ;
PreparedStatement pstmt ;
pstmt = conn.prepareStatement("INSERT INTO tblBasicHoliday " +
                 "(Date, RegionID) " +
                 "VALUES (?, ?)") ;
pstmt.clearParameters() ;
pstmt.setTimestamp(1, ts);
pstmt.setInt(2, 1);
int count = 0 ;
count = pstmt.executeUpdate() ;
我仍然得到了同样的错误,如下所示

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
有人能帮我吗?
谢谢。

我强烈怀疑问题在于
Date
是一个保留字。尝试:

String sql = "INSERT INTO tblBasicHoliday ([Date], RegionID) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);

(请注意,您也应该在
finally
块中关闭语句。)

问题在于
日期
是一个错误。您应该更改列名和SQL语句以使用另一个非保留字的列名,以避免此错误。

在这两种情况下是否都出现相同的错误?(顺便说一句,你肯定应该使用准备好的语句方法。)是的,这两种情况下的错误是相同的。你是对的,但在这种情况下,DB设计不在我的控制范围内,因此需要管理。但你的观点完全正确。谢谢还有一点,这只适用于PreparedStatement,不能使用语句执行。@user1614217:您应该使用PreparedStatement版本:)