从JAVA访问存储在MS-Access数据库中的日期/时间数据

时间:2013-08-22 09:33:42

标签: java date ms-access ms-access-2007

我正在为我的应用程序使用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。那么,如何存储正确的日期值?

2 个答案:

答案 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在插入查询中使用正确的格式。

希望这有帮助。