sql in语句传参数
delete from table where id in (1,2,3,4,5)
请问那个1,2,3,4,5要怎样传进去啊?
========================
我现在是用循环。
delete from table where id = ?
但我想知道用In如何传参
------最佳解决方案--------------------String ins="";
String[] ids="1,2,3,4,5".split(",");
for(String id : ids){
if(ins.equals("")){
ins="'"+id+"'";
} else{
ins=ins+","+"'"+id+"'";
}
}
String sql="delete from table where id in (?)";
------其他解决方案--------------------使用PrepareStatement
String sql="delete from table where id in(?,?,?,?,?)";
...
Object[] objects=new Object[]{...里边放5个参数...};
for(int i=0;i<objects.lengt;i++){
ps.setObject(i+1,objects[i]);
}
..
ps.executeUpdate();
------其他解决方案--------------------
呵呵,惭愧,还是楼上的方法好
------其他解决方案--------------------那个(1,2,3,4,5)只是举例。
并不能确定有多少个数。
比如有10个复选框,可能选中5个,也可能选择6个,7个,等等。
所以不能确定传多少个参数
------其他解决方案--------------------
就用这个,你有多少个都可以的
------其他解决方案--------------------
请问你有看到4楼吗?
------其他解决方案--------------------
楼主 你对5楼的态度不敢苟同......
你就先if判断嘛,
如果不选复选框就不删除
若选了肯定就能知道有几个了吧
然就连接几个(?)进去就行了
客户端取值,别说你不会
------其他解决方案--------------------个人觉得2楼的方法可行,但是注意不能超过1000个,否则在oracle中会报错。如果使用PrepareStatement建议使用批量删除的方式batch然后在execute。
------其他解决方案--------------------
相比,我觉得2楼的方法更可行。
似乎你没有明白我的意思。
假设现在是100个人来做多选题,每个人都可能有不同的选择,每个人选的数量都可能不同。