这个问题在这里已经有答案了:
条款备选方案中的准备声明?
(31个答案)
(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);//或任何应用程序
}