解决方案 »
- <script> alert('aa'); </script>
- 地图上确定一个物体,除了GPS定位,还有什么技术和方法,帮忙讨论一下!
- JSF中rich:datascroller使用问题
- 文件上传问题
- 关于 JSP的框架问题求教
- 目前有一b/s系统,jsp页面中有大量js代码,现在想改造成基于struts框架的,请问原先的js代码能保留使用吗?
- jquery 调用ajax时有多种数据返回方式,能否形象地概括一下这些返回类型的优点?
- 怎么在一个jsp页面里嵌套进csdn的页面
- 关于javamail方面的问题
- 关于jbulider8运行servlet问题(问题解决就结帖)
- Spring3 参数注入
- Java web
可以啊
如果有错,还请楼主把代码贴出来吧!
ps.setString(1,"1,2,3");
ps.executeUpdate();
代码就这么简单啊,报错的。这样就没问题
ps=con.prepareStatement("delete test where id in (?)");
ps.setString(1,"1");
ps.executeUpdate();
这样是肯定不行的,
因为prepareStatement本来就是为了防止sql注入才引进的。
in (?)——>"1,2,3"
它会把"1,2,3"当作一个完整的字符串传进sql文,而不会把逗号作为sql的分隔符。
也就是说他只是在检索符合id = '1,2,3'的记录。
而不是id = '1' or id = '2' or id = '3'的记录。
这种情况下必须用
delete test where id in (?,?,?)
若不知道参数的个数可以循环拼n个?号,总之一个参数一个问号。
你的id列表是字符串的吗? 数据库是什么?
String prop = "";
for(Integer i : arr){
prop +="?,";
}
String sql = "delete from t where id in ("+prop.substring(0,prop.length()-1)+")";
pst = conn.prepareStatement(sql);
for(int i =0 ;i<arr.length;i++){
pst.setInt(i+1, arr[i]);
}
pst.executeUpdate();
ps.setString(1,"1");
ps.setString(2,"2");
ps.setString(3,"3");
ps.executeUpdate();