使用集合的Java准备的SELECT SQL语句

时间:2019-06-18 15:37:55

标签: java mysql sql prepared-statement

我正在使用本身具有一些子查询的JDBC运行SELECT查询。这些子查询之一返回一列数据,然后将其作为ArrayList处理。由于错误处理,我准备了子查询并单独运行它,然后生成"(item_1, item_2, ... , item_n)"形式的java String。

请注意,元组元素是整数。

我的总体查询采用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)

0 个答案:

没有答案