【问题标题】:While inserting a date in MS-Access an Error Occured in java在 MS-Access 中插入日期时,java 中发生错误
【发布时间】:2014-04-05 06:58:15
【问题描述】:

这是我想在 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 访问驱动程序] 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)

请帮帮我.....

【问题讨论】:

    标签: java ms-access jdbc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      正如@Gord Thompson 所提到的,您可以在本机 sql 查询中强制转换一个值。但是在将变量 jTextField3.getText() 发送到 sql 之前将其转换为 Date 。因为是UI输入,所以先用Date parser先解析再转换成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

      【讨论】:

      • 感谢您的评论,为了更好地了解我,请您输入相同的代码.....
      猜你喜欢
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多