在检查了不同论坛中的各种解决方案并没有找到一个好的解决方案之后,我觉得我想出的下面的 hack 是最容易遵循和编码的。但是请注意,这不使用准备好的查询,但无论如何都会完成工作:
示例:假设您有一个要在“IN”子句中传递的参数列表。只需在“IN”子句中放置一个虚拟字符串,例如,“PARAM”确实表示将代替该虚拟字符串的参数列表。
select * from TABLE_A where ATTR IN (PARAM);
您可以将所有参数收集到 Java 代码中的单个字符串变量中。这可以按如下方式完成:
String param1 = "X";
String param2 = "Y";
String param1 = param1.append(",").append(param2);
在我们的例子中,您可以将用逗号分隔的所有参数附加到单个字符串变量“param1”中。
将所有参数收集到一个字符串中后,您只需将查询中的虚拟文本(即本例中的“PARAM”)替换为参数字符串,即 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”,以确保查询中不会出现这样的单词。希望你得到解决方案。