1

我收到一个错误,上面写着“语法错误:在第 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) 
); 
4

2 回答 2

3

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

PreparedStatement stt = conn.prepareStatement("update Students set ic = ?, name = ?, level = ?, programmecode = ?, `year` = ? where id = " + sql6);
于 2013-10-16T13:00:47.120 回答
1

正如 Sashi Kant 所说,YEAR 是一个保留关键字,如果您尝试过这种方式但它不起作用,那么尝试将表中的列名“year”更改为“yearofstudy”,它应该可以工作。

于 2013-10-16T17:51:41.077 回答