java.sql.SQLSyntaxErrorException, когда выполнить готовить оператор - PullRequest
1 голос
/ 24 мая 2019

Я попытался запустить preparedStatement ps, чтобы проверить, существуют ли данные в базе данных или нет.Затем он запустит обновление, если оно существует, или вставит, если оно не существует.Однако я получаю синтаксическую ошибку

java.sql.SQLSyntaxErrorException: в вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'order WHERE date =' 2019-05-22 '' в строке 1

Я не могу определить, где находится ошибка.Кто-нибудь может помочь?

PreparedStatement ps,ps1;
        ps =con.prepareStatement("Select 1 from order WHERE date = ?");
        ps.setString(1, date);
        ResultSet rsOrder=ps.executeQuery();  
        if(rsOrder.next()) {  
            System.out.println("reOrder:  true");
            ps1 = con.prepareStatement("UPDATE order SET result = ?  WHERE date = ?");
            ps1.setString(1, json);
            ps1.setString(2, date);
            int rs=ps1.executeUpdate();

        }else {
            System.out.println("reOrder:  false");
            ps1 = con.prepareStatement("INSERT INTO order (date,result) VALUES (?,?)");
            ps1.setString(1, date);
            ps1.setString(2, json);
            int rs=ps1.executeUpdate();
        }

1 Ответ

1 голос
/ 24 мая 2019

order - зарезервированное слово в MySQL.Так что это не позволит, без экранирования зарезервированных слов.

Вы можете избежать этого, добавив `вокруг ключевого слова как:

Select 1 from `order` WHERE date = ?

UPDATE `order` SET result = ? WHERE date = ?

INSERT INTO `order` (date, result) VALUES (?, ?)
...