Java SQL : syntax error encountered at line xx column xx

标签 java sql

我收到一条错误消息“语法错误:在第 1 行第 69 列遇到“年份””

这是我的代码

public void UpdateRecord(String sql1, String sql2, String sql3, String sql4, int sql5, String sql6) {
    try {

        PreparedStatement stt = conn.prepareStatement("update Students set ic = ?, name = ?, level = ?, programmecode = ?, year = ? where id = " + sql6);

        stt.setString(1, sql1);
        stt.setString(2, sql2);
        stt.setString(3, sql3);
        stt.setString(4, sql4);
        stt.setInt(5, sql5);
        //stt.setString(6, sql6);
        stt.executeUpdate();

        //stt.close();


    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
    }

}

虽然异常指出错误起源于“YEAR”,但我没有找到任何

这里是sql表

CREATE TABLE STUDENTS ( 
ID VARCHAR(10) not null primary key, 
IC VARCHAR(14) unique, 
NAME VARCHAR(50), 
LEVEL CHAR(1), 
PROGRAMMECODE VARCHAR(3), 
YEAR INTEGER, 
foreign key (PROGRAMMECODE) references PROGRAMMES(CODE) 
); 

最佳答案

MYSQL 有一些保留关键字,你不应该将它用于变量名,但如果你真的想要,你可以以不同的方式使用它。 year 是问题所在。 要么更改列的名称 或在保留关键字周围使用反引号。

PreparedStatement stt = conn.prepareStatement("update Students set ic = ?, name = ?, level = ?, programmecode = ?, `year` = ? where id = " + sql6);

关于Java SQL : syntax error encountered at line xx column xx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404074/

相关文章:

java - 如何在ejb中依次运行两个用@Schedule注解的方法

java - 如何向 Elastic Transport Client 添加身份验证

java - 为什么没有为我的请求生成 CSRF cookie?

sql - 如何查询 postgres json 列中的嵌套数组?

sql - 缓冲池中没有可用的空闲缓冲区

mysql - 如何搜索内容但跳过方括号内的内容?

java - 在 Spring 3 中为组件扫描组织类的聪明方法是什么?

java - 为什么一个列表给了我一个值,而另一个却没有?

SQL Developer ISA 层次结构到关系模型

mysql - SQL - 使用非聚合表连接聚合表