在in子句中包含参数列表的PreparedStatement[副本]

这个问题在这里已经有答案了
条款备选方案中的准备声明?

(31个答案)

三年前关闭的

如何在执行查询时为JDBC中preparedStatement中的in子句设置值

例如:

连接。准备声明(“从(?)中的测试位置字段中选择*);

如果这个in子句可以包含多个值,我怎么做呢。有时我事先知道参数列表,有时我事先不知道。如何处理这个案件

我要做的是加上一个“&引用;对于每个可能的值

var stmt=String.format(“从(%s)中的测试位置字段中选择*”;,
values.stream()
.map(v-“gt;”?“)
.collect(收集器.连接(“,”));

使用StringBuilder的备选方案(这是10多年前的原始答案)

列表值=。。。
StringBuilder=新的StringBuilder();
对于(int i=0;i<values.size();i++){
builder.append("?,");
}
字符串占位符=builder.deleteCharAt(builder.length()-1).toString();
字符串stmt="在“测试位置”字段中选择“*”(“占位符+”)”;;
PreparedStatement pstmt=。。。

然后愉快地设置参数

int index=1;
用于(对象o:值){
setObject(index++,o);//或任何应用程序
}

发表评论