【问题标题】:SQL syntax error near desc [duplicate]desc 附近的 SQL 语法错误
【发布时间】:2018-04-16 13:17:24
【问题描述】:

我得到的错误是:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'Desc) 值附近使用正确的语法(1,'Sem 2','1',1,'1234','2017-11-03','2' ,3,'vnfhmj.k;/kkc')' 在第 1 行

如果我删除desc...,错误就消失了。可以输入的项目数量有限制吗?

代码:

String query="insert into exam(sub_id,exam_sem,co,tch_id,ex_pwd,ex_date,ex_duration,noofq,Desc) values(?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt=DatabaseConnector.getPreparedStatement(query);
//pstmt.setInt(1,ed.getEx_id());
pstmt.setInt(1,ed.getSub_id());
pstmt.setString(2,ed.getEx_sem());
pstmt.setString(3,ed.getEx_co());
pstmt.setInt(4,ed.getT_id());
pstmt.setString(5,ed.getEx_pwd());
pstmt.setString(6,ed.getEx_date());
pstmt.setString(7,ed.getEx_duration());
pstmt.setInt(8,ed.getNoofq());
pstmt.setString(9,ed.getDesc());

【问题讨论】:

    标签: java mysql sql web


    【解决方案1】:

    DESC 是一个 SQL 关键字,用于在 ORDER BY 子句中指定方向。这大概就是问题所在。试着用反引号括起来,比如 `Desc`。

    另外,以后尽量不要使用关键字或SQL函数作为字段名,这样会导致非常难以调试的错误。

    【讨论】:

    • 正确。您需要使用反引号转义列名!根据@jspurim 响应
    • 是的,现在我只需要知道如何在 markdown 中转义 ` 来编辑我的答案 XD。
    • 很高兴,能提供帮助。如果对您有用,请考虑接受答案。
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2016-03-12
    • 1970-01-01
    相关资源
    最近更新 更多