Вы можете использовать только «?»оператор для отдельных значений .Используя строку для установки значения IN, вы получите ...
SELECT * FROM TABLE WHERE ID IN (?)
... будет считаться ...
SELECT * FROM TABLE WHERE ID IN ("1,2,3,4")
... в вашем случае.
Если вы используете «Вариант 2» из ссылки JavaRanch, это будет выглядеть так:
SELECT * FROM TABLE WHERE ID IN (1, 2, 3, 4)
... что, я считаю, то, что вы хотите, НО вам нужно всегда указывать ровно 4 значения.Если у вас их меньше, вы, конечно, можете использовать один из них снова без какого-либо вреда, но если у вас их больше, вам не повезло.
Я бы порекомендовал вам сделать это динамически создать PreparedStatement.с таким количеством '?'как у вас есть в-параметры, а затем перебрать и установить их.Таким образом, вы комбинируете необходимость динамического запроса с очисткой ввода, избегая любых атак SQL-инъекций.