在MS-Access中插入日期时在java中出现错误

时间:2014-04-05 06:58:16

标签: java ms-access jdbc

这是我想在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 Driver]
Syntax error in INSERT INTO statement
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4837)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)
at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)

请帮帮我......

2 个答案:

答案 0 :(得分:1)

DATE是Access SQL中的reserved word,因此如果您必须将其用作列名,则需要将其括在方括号中,如下所示:

pst = con.prepareStatement("insert into InOut ([Date]) Values(?)");
ps.setString(1, "2011-12-31");
ps.executeUpdate();

答案 1 :(得分:0)

正如@Gord Thompson所提到的,你可以在本机sql查询中转换一个值。但是在将变量jTextField3.getText()发送到日期之前将其强制转换为日期。因为它是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