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();
[其他解释]
请问,我该放多少个?
[其他解释]
不好意思,刚才比较烦躁,有所冒犯,敬请见谅。
我已经想出办法了,请指教。
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)