Подготовленный Java оператор SELECT SQL с использованием наборов - PullRequest
0 голосов
/ 18 июня 2019

Я выполняю запрос SELECT, используя JDBC, который сам имеет несколько подзапросов.Один из этих подзапросов возвращает столбец данных, который я затем обрабатываю как ArrayList.Из-за обработки ошибок я подготавливаю подзапрос и запускаю его отдельно, затем создаю строку Java в виде "(item_1, item_2, ... , item_n)".

Обратите внимание, что элементы кортежа являются INTEGERS.

Мой всеобъемлющий запрос имеет вид PreparedStatement, где я пытаюсь заполнить ?, используя мой результат подзапроса.

String subqueryResult = "(1, 2, 3)";

// ...

PreparedStatement stmt = connection.prepareStatement("SELECT * FROM table WHERE columnName in ?");
stmt.setString(subqueryResult);

Я получаю ошибку SQL 1064, в которой говорится, что мой запрос выглядит как WHERE columnName in ''(1, 2, 3)'.

Я понимаю, что буквенные кавычки не сбалансированы, но даже если они сбалансированы, мы не можем выполнить предложение IN для строки.

Как бы я мог безопасно заполнить PreparedStatement, чтобы результирующий запрос выглядел как SELECT * FROM table WHERE columnName in (1, 2, 3)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...