日期:2014-05-17  浏览次数:20919 次

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();

------其他解决方案--------------------
引用:
使用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]);
……


呵呵,惭愧,还是楼上的方法好
------其他解决方案--------------------
那个(1,2,3,4,5)只是举例。
并不能确定有多少个数。
比如有10个复选框,可能选中5个,也可能选择6个,7个,等等。
所以不能确定传多少个参数
------其他解决方案--------------------
引用:
使用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]);
}
……

就用这个,你有多少个都可以的
------其他解决方案--------------------
引用:
引用:
使用PrepareStatement

String sql="delete from table where id in(?,?,?,?,?)";
...
Object[] objects=new Object[]{...里边放5个参数...};
for(int i=0;i<objects.lengt;i++){
  ps.setOb……

请问你有看到4楼吗?
------其他解决方案--------------------
引用:
那个(1,2,3,4,5)只是举例。
并不能确定有多少个数。
比如有10个复选框,可能选中5个,也可能选择6个,7个,等等。
所以不能确定传多少个参数


楼主 你对5楼的态度不敢苟同......

你就先if判断嘛,
如果不选复选框就不删除
若选了肯定就能知道有几个了吧
然就连接几个(?)进去就行了
客户端取值,别说你不会

------其他解决方案--------------------
个人觉得2楼的方法可行,但是注意不能超过1000个,否则在oracle中会报错。如果使用PrepareStatement建议使用批量删除的方式batch然后在execute。
------其他解决方案--------------------
引用:
引用:
那个(1,2,3,4,5)只是举例。
并不能确定有多少个数。
比如有10个复选框,可能选中5个,也可能选择6个,7个,等等。
所以不能确定传多少个参数


楼主 你对5楼的态度不敢苟同......

你就先if判断嘛,
如果不选复选框就不删除
若选了肯定就能知道有几个了吧
然就连接几个(?)进去就行了
客户端取值,……

相比,我觉得2楼的方法更可行。
似乎你没有明白我的意思。
假设现在是100个人来做多选题,每个人都可能有不同的选择,每个人选的数量都可能不同。