Как игнорировать столбец в обновлениях SQL - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть программа, которая просматривает модель пользователя и добавляет значения в подготовленный оператор обновления, если они не равны нулю, как указано ниже

    PreparedStatement pst = conn.prepareStatement("UPDATE users SET name=?,email=?,pwd=?,avatar=?,sts=?,bio=?,country=? WHERE uuid=?");
    if(this.name != null) pst.setString(1, this.name);
    if(this.email != null) pst.setString(2, this.email);
    if(this.password != null) pst.setString(3, this.password);
    if(this.avatar != null) pst.setString(4, this.avatar);
    if(this.status != null) pst.setString(5, this.status);
    if(this.bio != null) pst.setString(6, this.bio);
    if(this.country != null) pst.setString(7, this.country);
    pst.setString(6, this.id);

Проблема, с которой я сталкиваюсь, заключается в том, что у меня не может бытьнеопределенное поле в подготовленном утверждении.Что я могу установить поля, которые я не хочу менять равными?

1 Ответ

0 голосов
/ 27 сентября 2018

Добавьте параметры, даже с NULL значениями.Затем измените update на:

UPDATE users
    SET name = coalesce(?, name),
       email = coalesce(?, email),
       . . .
   WHERE uuid = ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...