首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

sql in话语传参数

2012-12-16 
sql in语句传参数delete from table where id in (1,2,3,4,5)请问那个1,2,3,4,5要怎样传进去啊?

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个人来做多选题,每个人都可能有不同的选择,每个人选的数量都可能不同。


请问,我该放多少个?
[其他解释]
不好意思,刚才比较烦躁,有所冒犯,敬请见谅。
我已经想出办法了,请指教。

public void delUsers(int[] userids) {
String temp = "?";
int len = userids.length;
while (len > 1) {
temp = temp + ",?";
len--;
}
String sql = "delete from user where userid in (" + temp + ")";
System.out.println(sql);
conn = databaseConn.getConn();
try {
ps = conn.prepareStatement(sql);
for (int i = 0; i < userids.length; i++) {
ps.setInt(i + 1, userids[i]);
}
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

[其他解释]

部分测试代码
int[] ss = { 4, 5, 6, 7 };
delUsers(ss);
delete from user where userid in (?,?,?,?)
delete from user where userid in (4,5,6,7)


[其他解释]
null

热点排行
Bad Request.