@MaximPython

Как правильно указать значение SET?

Добрый день, мне нужно реализовать UPDATE базы данных mysql. Необходимо указать SET из переменной type, пробовал делать это через "?" и "*" , но не получается, далее нужно указать значение, помогите найти ошибку.

Мой код:
public void addBlocks(UUID uuid,String type, int blocks){
        try{
            PreparedStatement ps = plugin.SQL.getConnection().prepareStatement("UPDATE PlayerBlocks SET * = ? WHERE UUID=?");
            ps.setString(1,type);
            ps.setInt(2,(getUpgrade(uuid, type) + blocks));
            ps.setString(3, uuid.toString());
            ps.executeUpdate();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }


Выдает эту ошибку
[13:30:19 WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''DIRT'=1 WHERE UUID='9c91354c-f13e-303c-97bb-51ea80f5fc3f'' at line 1
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
@Akina
Сетевой и системный админ, SQL-программист.
пробовал делать это через "?" и "*" , но не получается

Для того. чтобы вставляемое значение не квотировалось, следует использовать плейсхолдер из 2 знаков вопроса:
PreparedStatement ps = plugin.SQL.getConnection().prepareStatement("UPDATE PlayerBlocks SET ?? = ? WHERE UUID=?");

Тогда первый передаваемый параметр - имя поля для обновления. 2 и 3 соответственно значения (новое и для условия отбора).
Ответ написан
VlasenkoFedor
@VlasenkoFedor
Программист: php, js, go
SET fieldName = ?
название поля которое изменить надо вставить вместо *
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы