Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Если вы используете параметры (?
), , по умолчанию максимальное число 999 .
Если вы создаете инструкцию SQL динамически, вставляя значения напрямую ( что плохо для строк), нет верхнего предела на длине такого списка. Тем не менее, существует предел длины всей инструкции SQL , которая по умолчанию равна миллиону байтов.
Если вы не можете гарантировать, что ваш запрос не превышает эти ограничения, вы должны использовать временную таблицу (см. ответ LS_dev).
Если у вас длинный список, я бы предложил два подхода:
Первое решение:
Добавить все данные во временную таблицу:
CREATE TEMP TABLE lng_list(image_address);
-- Insert all you elements in lng_list table
-- ...
DELETE FROM images WHERE image_address NOT IN (SELECT image_address FROM lng_list);
Обязательно используйте эту внутреннюю транзакцию, чтобы получить хорошую производительность.
Второе решение:
(УДАЛЕНО: работает только для IN
, а не NOT IN
...)
Производительность должна быть справедливой для любого из эти решения.