java - 无效的日期时间格式 : insert date/time into Access from Java

标签 java ms-access jdbc ucanaccess

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

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 data exception: invalid datetime format

代码如下:

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);

最佳答案

错误消息表明您的 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();

关于java - 无效的日期时间格式 : insert date/time into Access from Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645086/

相关文章:

sql - Access VBA : Run-time error '94' : Invalid use of Null

iis - 安装 IIS 管理工具时 DoCmd.SendObject 失败

mysql - scalikejdbc 中的批量插入在远程计算机上速度很慢

createStatement 的 java sql 语法错误

java - 如何根据用户登录切换jackrabbit中的工作区?

java - Gradle:下载gradle需要 "very long time",activity_main.xml一直显示 "Loading"

java - 如何从谷歌游戏控制台获取 IAP SKU 代码?

ms-access - 的意思 !和 。 Access 对象和属性时

java - SQL 查询在 phpmyadmin 中有效,但在使用 jdbc 和 java 时无效

java - 使用 Jackson 忽略某些字段反序列化而不更改模型