1

我正在为我的应用程序使用 MS-Access 数据库。现在我想从 JAVA 将当前日期存储在数据库中。以下代码段将日期数据存储在数据库中,但存储的值不正确: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 不支持时间戳。那么,如何存储正确的日期值?

4

2 回答 2

2

如果您Timestamp使用参数化查询来执行 INSERT(无论如何您都应该这样做),则可以使用。以下代码适用于我:

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);
        }

    }

}
于 2013-08-22T23:03:50.533 回答
1

您正在尝试插入由 Java 的 Date 类打印的日期/时间。我认为 MSAccess 需要它的日期/时间为 #YYYY-MM-DD HH:MM:SS# 所以尝试使用 SimpleDateFormat 在插入查询中具有正确的格式。

希望这可以帮助。

于 2013-08-22T09:44:40.783 回答