如何正确的使用 in 语句呢?

zrc 发布于 2016/08/24 11:38
阅读 361
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

public boolean deleteUserInfo(String para) {
StringBuffer sql = new StringBuffer();
sql.append(" delete from jfinal_user where id in (?) ");
int resutlt = Db.update(sql.toString(), para);
if (resutlt >= 1)
return true;
else
return false;

}

参数是 66,67,68,69,70  ,但是 这个执行出来的结果只能够删除一条信息,具体原因大概也能够明白,  JDBC 确实本身不支持 in 语句, 各位大神有更好的解决方案吗?  莫非真只能使用 for 循环 执行多条 delete 语句 吗?

加载中
1
JFinal
JFinal
这里是相同的问答,参考一下:http://www.oschina.net/question/1020238_2191741
0
太清
好好理解一下 PrepareStatment 你那边只有一个问号 当然只能是一个参数 用一下in(?,?,?) updatesql(sql,65,66,67)
skhuhu
skhuhu
回复 @zrc : 但是你用拼接就错了 ·是不是只能删除第一个id的数据?
zrc
zrc
这个我明白,如果使用拼接sql 的形式的话,感觉 还是比较麻烦。
0
IdleMan
IdleMan
sql拼接
DuLerWeil
DuLerWeil
回复 @DuLerWeil : 不喜欢拼用+号拼sql的话,可以用String.format(xxx,xxx)格式化。总之比一般至少要多写一步。
DuLerWeil
DuLerWeil
正解,in语句必须拼接,不能用占位符,否则会包上双引号当作一个字符串。比如 in(?)和参数1,2,3,4。 期望结果是in(1,2,3,4),但实际是in("1,2,3,4")
0
Eric_林
Eric_林

谁跟你说jdbc不支持in ,只是in的写法不支持 ? 传入,这里要写sql拼接

 "delete from jfinal_user where id in ("+para+")"

返回顶部
顶部