如何在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
相关产品推荐
相关产品推荐

