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

将表单数据存入MySQL数据库时触发java.sql.SQLSyntaxErrorException语法错误的排查求助

解决MySQL SQL语法错误(关键字冲突)

你的问题根源很明确:groups是MySQL的保留关键字,直接在SQL语句里作为字段名使用会触发语法错误。从报错信息里也能看到,错误正好出现在groups这个位置。

具体修改方案

把你的SQL插入语句中的groups字段用反引号(`)包裹起来,修改后的SQL应该是这样:

insert = conn.prepareStatement("INSERT INTO session(subcode,subject,lecturers,tags,`groups`,stdcount,hours)VALUES(?,?,?,?,?,?,?)");

为什么会报错?

MySQL有一系列保留关键字(比如groups、user、order等),这些词被数据库系统用作语法的一部分,不能直接作为标识符(表名、字段名)使用。如果一定要用这些词作为字段名,必须用反引号将其包裹,告诉数据库这是一个标识符而非关键字。

额外小提示

虽然你的参数设置顺序看起来是正确的(已经对应了每个占位符的位置),但建议尽量按占位符的顺序依次设置参数,这样后续维护代码时更不容易出错。比如可以调整成:

insert.setString(1, code);
insert.setString(2, subName);
insert.setString(3, lecturersList.toString().replace("]", " "));
insert.setString(4, tag);
insert.setString(5, grpId);
insert.setString(6, stdQty);
insert.setString(7, durations);

这样代码的可读性会更好,也能避免不小心搞混参数顺序的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:57:48