Java PreparedStatement устанавливает NULL-параметры - PullRequest
1 голос
/ 15 мая 2019

Java PreparedStatement позволяет вам установить значение для данного параметра или установить его в NULL

SELECT *
FROM ADDRESS
WHERE ADDRESS_LINE1 = ? 

чтобы мы могли написать код для установки этого параметра:

 if (addressLine1 != null) {
      preparedStatement.setString(1, addressLine1);
    } else {
      preparedStatement.setNull(1, VARCHAR);
    }

однако также объявлено, что вы никогда не должны сравнивать значение со значением null, используя оператор =, и фактически использовать оператор IS для сравнения нулей.

Подготовленный оператор на самом деле заменяет оператор = для IS здесь, или же просто вставляется нулевое значение с использованием оператора =? Если последнее, то когда это когда-нибудь полезно, и вы действительно получаете ожидаемый результат?

Я задаю этот вопрос на обратной стороне следующего вопроса о переполнении стека

SQL имеет значение null и = null

1 Ответ

2 голосов
/ 15 мая 2019

Нет, подготовленный оператор не заменяет = на IS.Ваш код отвечает за это.Точно так же, как вы отвечаете за запросы, буквально использующие something = NULL вместо something IS NULL.

Возможность установить нулевые значения для использования, например, в выражении update или insert или в случаяхгде вы правильно используете is или is distinct from.

Он также используется для нулевых условных проверок, таких как where ? is null or something = ? с

String something = "xyz"; // or String something = null;
statement.setString(1, something);
statement.setString(2, something);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...