【问题标题】:Error while storing jXDatePicker1 Date value in database在数据库中存储 jXDatePicker1 日期值时出错
【发布时间】:2013-04-05 19:07:28
【问题描述】:

我正在使用 swingxLabs 的组件 jXDatePicker1 以图形格式选择日期并尝试将其存储在 derby 制作的数据库中。我的代码是这样的:

Date date=jXDatePicker1.getDate();

 PreparedStatement statement = connect
      .prepareStatement("INSERT INTO BILLING (DATE, DHRNUMBER) VALUES('"+date+"', "+dhrNumber+")");

我得到的错误是:

java.sql.SQLDataException: The syntax of the string representation of a datetime value is incorrect.

我做得对吗?或者可以有其他方法来解决这个问题。

谢谢

【问题讨论】:

  • 我想 1- JDBC 期待 java.sql.Date 或 2- 您尝试插入/更新 Date 对象的 String 值,而不是使用实际的 Date 对象本身。如果使用 PreparedStatement,则可以使用 setDate 方法。向我们展示您的更新代码
  • 你能给我发任何关于如何使用 setDate 方法的链接吗?
  • 查看 JavaDocs 中的 PreparedStatement 并从 Oracl 中查找 JDBC 跟踪

标签: java sql derby swingx


【解决方案1】:

Derby 的内置 DATE 数据类型支持字符串格式的简短列表:http://db.apache.org/derby/docs/10.9/ref/rrefsqlj18730.html

由于您使用的是 PreparedStatement,因此最好的办法是准备语句

INSERT INTO BILLING (DATE, DHRNUMBER) VALUES(?,?)

然后使用 setDate() 和 setInt() 方法替换您的实际值: http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

【讨论】:

    【解决方案2】:

    这个替代方案对我完全有效:

        Date d=jXDatePicker1.getDate();
        System.out.println(d);
        DateFormat df=new SimpleDateFormat("MM/dd/yyyy");
        String date=df.format(d);
        System.out.println(date);
    
    PreparedStatement statement = connect
          .prepareStatement("INSERT INTO BILLING (DATE) VALUES('"+date+"')");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2017-05-31
      • 2017-03-25
      • 2014-05-04
      相关资源
      最近更新 更多