这是我要通过其插入日期到MS-Aceess数据库中的代码

  try {
    pst = con.prepareStatement("insert into InOut (Date) Values(?)");
    pst.setString(1,jTextField3.getText());
    pst.executeUpdate();
    JOptionPane.showMessageDialog(null,"Saved Successfully.");
  } catch(Exception xp1) {
    xp1.printStackTrace();
    JOptionPane.showMessageDialog(null,xp1.getMessage());
    return;
  }


但是,在运行上述代码时,发生以下错误:-

java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序]
INSERT INTO语句中的语法错误
在sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
在sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
在sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
在sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4837)
在sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)
在sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)


请帮我.....

最佳答案

如@Gord Thompson所述,您可以在本机sql查询中强制转换一个值。但是将变量jTextField3.getText()转换为Date,然后再将其发送到sql中。因为它是UI输入,所以使用Date解析器首先解析它,然后将其转换为Date。

我假设数据库中列的名称为userDateColumn。您将不得不强制用户以特定格式输入日期,否则您将获得例外。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {
   String userInput = jTextField3.getText();
   // Convert UserInput Into Date
   Date userDate = sdf.parse(userInput);

   pst = con.prepareStatement("insert into InOut (userDateColumn) Values(?)");

    // Send that is the input to the sql
   pst.setString(1,userDate);


选中此SimpleDateFormat ignoring month when parsing

10-07 16:53