1

アプリケーションに MS-Access データベースを使用しています。現在、JAVA から DB に現在の日付を保存したいと考えています。次のコード セグメントは、日付データをデータベースに保存しますが、誤った値を保存します: 6/6/1905。MS-Access のデータ型は Date/Time です。現在の日付を設定するために、次のコード セグメントを使用しました。

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

TimeStamp は 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 に答える