1

「Syntex Error : Encountered "year" at line 1 column 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) 
); 
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 に答える