Possible Duplicate:
How to convert Java TimeStamp into ms access Date?
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 today = new java.util.Date();
long time = today.getTime();
java.sql.Date date = new java.sql.Date(time);
return new Timestamp(date.getTime());
Error:
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Changes Recommemded:
public void addSale(String saleDetails, String saleTotal)
throws ClassNotFoundException, SQLException {
Statement myStatement = getConnection();
String sql = "INSERT INTO Sale (SaleDetails, SaleTotal, SaleTimestamp)"
+ " VALUES ('"+saleDetails+"','"+saleTotal+"',Now())";
myStatement.executeUpdate(sql);
closeConnection();
New error:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression ''Now())'.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)
Ask the db engine to use its
Now()function for the value you insert into yourSaleTimestampfield.Java should have some way to write a text string to a file or console. Suggest you find and use such a method in order to give yourself the opportunity to view the completed SQL statement you’re asking the db engine to execute. Based on what I saw in another Java question, I’ll suggest …
Unfortunately I don’t know Java. If that suggestion does not work, find another way to do it.