【问题标题】:invalid datetime format: insert date/time into Access from Java无效的日期时间格式:从 Java 将日期/时间插入 Access
【发布时间】:2016-10-05 07:59:06
【问题描述】:

我想在 Access 中插入一个日期时间值,但出现此错误:

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 数据异常:日期时间格式无效

代码如下:

private void txtsubmitActionPerformed(java.awt.event.ActionEvent evt) {                                          
    SimpleDateFormat A = new SimpleDateFormat("dd/MM/yyyy");
    Peminjaman P= new Peminjaman(setIDTrans(),txtid.getText(),A.format(txttglpinjam.getDate()),A.format(txttglkembali.getDate()),txtplat.getText(),txtnama.getText(),txtdriver.getText());
    c.InsertPeminjamanD(P);

【问题讨论】:

标签: java ms-access jdbc ucanaccess


【解决方案1】:

错误消息表明您的 InsertPeminjamanD 方法最终试图做类似的事情

INSERT INTO Table1 (DateTimeField) VALUES ('31/05/2016')

这不起作用有两个原因:

  1. UCanAccess 要求将日期文字包含在哈希标记 (#) 中,并且

  2. UCanAccess 通常期望xx/yy/zzzz 日期文字为MM/dd/yyyy,而不是dd/MM/yyyy

因此,如果将上述查询重新排列为 ...

INSERT INTO Table1 (DateTimeField) VALUES (#05/31/2016#)

...虽然使用 PreparedStatement 并传递适当的日期值确实会更好:

String sql = "INSERT INTO Table1 (DateTimeField) VALUES (?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setDate(1, java.sql.Date.valueOf("2016-05-31"));
ps.executeUpdate();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2020-03-10
    相关资源
    最近更新 更多