1

I would like to insert a java Timestamp into an msaccess database but I am getting an error which is listed below. The ms-access field has been set to a DATE datatype. Any advise would be deeply appreciated. Thanks

Here's my DAO class method:

public void addSale(String saleDetails, String saleTotal, Timestamp saleTimestamp) 
                    throws ClassNotFoundException, SQLException {

Statement myStatement = getConnection();
String sql = "INSERT INTO Sale (SaleDetails, SaleTotal, SaleTimestamp)"
            + " VALUES ('"+saleDetails+"','"+saleTotal+"','"+saleTimestamp+"')";

myStatement.executeUpdate(sql);
closeConnection();

My DTO method:

public void storeSale(String saleDetails, String saleTotal, Timestamp saleTimestamp){
   DAO dao = DAO.getDAO();
   try {
      dao.addSale(saleDetails, saleTotal, saleTimestamp);
    } catch (ClassNotFoundException | SQLException ex) {
        Logger.getLogger(Sale.class.getName()).log(Level.SEVERE, null, ex);
    }

My Timestamp method:

public Timestamp addTimestamp(){ 
    java.util.Date date= new java.util.Date();
return new Timestamp(date.getTime());
}

Error: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

4

1 回答 1

3

您需要将您转换java.util.Data为 ajava.sql.Date或者如果您需要将java.sql.Timestamp数据库类型更改为的精度TIMESTAMP

一些代码来创建java.sql.Date

 java.util.Date today = new java.util.Date();
 long t = today.getTime();
 java.sql.Date dt = new java.sql.Date(t);

然后,您可以将 java.sql.Date 放入您的数据库中,这对我一直有效。

信息:

  • java.sql.Date对应于 SQL DATE,它存储年、月和日,而忽略小时、分钟、秒和毫秒。此外sql.Date,与时区无关。
  • java.sql.Time对应 SQLTIME并且只包含有关小时、分钟、秒和毫秒的信息。
  • java.sql.Timestamp对应的 SQLTIMESTAMP是纳秒的日期(注意util.Date只支持毫秒!)。
于 2012-11-10T14:35:04.500 回答