我收到一条错误,说“Syntex错误:遇到”年份“在第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);
}
}
虽然异常说明错误来自“年”,但我没有找到任何
这里是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)
);
答案 0 :(得分:3)
MYSQL有一些保留的关键字,你不应该将它用作变量名,但如果你真的想要,你可以用不同的方式使用它。
这里year
就是问题所在。
更改列的名称
或使用保留关键字周围的后退。
PreparedStatement stt = conn.prepareStatement("update Students set ic = ?, name = ?, level = ?, programmecode = ?, `year` = ? where id = " + sql6);
答案 1 :(得分:1)
YEAR是一个保留的关键字,因为Sashi Kant说,如果你尝试了这种方式并且它不起作用,那么尝试在你的表中将列名“year”更改为“yearofstudy”,它应该可以工作。