Изучив различные решения на разных форумах и не найдя хорошего решения, я чувствую, что нижеприведенный хак, который я придумал, является самым простым для отслеживания и написания кода. Однако обратите внимание, что он не использует подготовленный запрос, но все равно выполняет работу:
Пример. Предположим, у вас есть список параметров для передачи в предложении «IN». Просто поместите фиктивную строку внутри предложения IN, скажем, «ПАРАМ» означает список параметров, которые будут приходить на место этой фиктивной строки.
select * from TABLE_A where ATTR IN (PARAM);
Вы можете собрать все параметры в одну строковую переменную в своем коде Java. Это можно сделать следующим образом:
String param1 = "X";
String param2 = "Y";
String param1 = param1.append(",").append(param2);
Вы можете добавить все свои параметры, разделенные запятыми, в одну строковую переменную 'param1', в нашем случае.
После сбора всех параметров в одну строку вы можете просто заменить фиктивный текст в вашем запросе, т.е. в данном случае «PARAM», на параметр String, то есть param1. Вот что вам нужно сделать:
String query = query.replaceFirst("PARAM",param1); where we have the value of query as
query = "select * from TABLE_A where ATTR IN (PARAM)";
Теперь вы можете выполнить ваш запрос, используя метод executeQuery (). Просто убедитесь, что в вашем запросе нигде нет слова «PARAM». Вы можете использовать комбинацию специальных символов и алфавитов вместо слова «PARAM», чтобы исключить вероятность появления такого слова в запросе. Надеюсь, у вас есть решение.