Не можете да обвържете списък с един параметър в подготвен оператор.
Генерирайте SQL с маркера за параметър за всеки елемент в списъка, например:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Въпреки че ще генерирате нов израз за всяка заявка, все пак препоръчвам да използвате PreparedStatement
. Ако вашият списък съдържа String
екземпляри, ще получите необходимото екраниране за защита от SQL инжектиране.
Но дори и да е безопасен тип, като Integer
обекти, някои драйвери или междинен софтуер могат да кешират PreparedStatements
и връща кеширано копие, ако се изисква същият формуляр. Разбира се, ще са необходими някои тестове. Ако вашите списъци се различават значително по размер, ще имате много различни изрази и лошо внедрен кеш може да не е готов да се справи с толкова много.