You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中更新日期?JDBC连接MariaDB更新数据报错求助

解决JDBC更新MariaDB时的SQL语法错误

从你给出的错误信息一眼就能揪出问题:你的UPDATE语句里重复使用了SET关键字,这完全不符合MariaDB的SQL语法规范。

错误提示里明确指向了问题点:near 'set brand ='Nissan', set type='Compactor Vehicle',set model='zx1000x',set dateAq'——你每更新一个字段就写了一次SET,但实际上UPDATE语句里SET只需要写一次,后续的字段赋值用逗号分隔即可。

错误的SQL示例(你大概率写出了类似语句)

UPDATE your_table
SET brand = 'Nissan',
SET type = 'Compactor Vehicle',
SET model = 'zx1000x',
SET dateAq = '2024-05-20'
WHERE id = 123;

正确的SQL写法

把多余的SET全部删掉,只保留第一个,字段之间用逗号分隔开:

UPDATE your_table
SET brand = 'Nissan',
    type = 'Compactor Vehicle',
    model = 'zx1000x',
    dateAq = '2024-05-20'
WHERE id = 123;

JDBC中的正确实现方式

如果你是手动拼接SQL字符串,一定要注意别在循环字段时反复追加SET;更推荐用PreparedStatement,既能避免SQL注入,还能减少这类低级语法失误:

String updateSql = "UPDATE your_table SET brand = ?, type = ?, model = ?, dateAq = ? WHERE id = ?";

try (Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPass);
     PreparedStatement pstmt = conn.prepareStatement(updateSql)) {

    // 依次设置参数
    pstmt.setString(1, "Nissan");
    pstmt.setString(2, "Compactor Vehicle");
    pstmt.setString(3, "zx1000x");
    pstmt.setDate(4, java.sql.Date.valueOf("2024-05-20"));
    pstmt.setInt(5, 123);

    // 执行更新操作
    int affectedRows = pstmt.executeUpdate();
    System.out.println("成功更新 " + affectedRows + " 条记录");
} catch (SQLException e) {
    e.printStackTrace();
}

去检查下你的JDBC代码里生成SQL的部分,肯定能找到重复添加SET的地方,修正后问题就能解决啦。

内容的提问来源于stack exchange,提问作者SorryToDisturb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:17:01