像 PreparedStatement ps = con.prepareStatement("delete from tableName where id=?"); for(int i = 0;i<idList.length;i++){ ps.setInt(1,idList[i]); ps.execute(); } 中,ps.setInt(1,idList[i]);就表示将idList[i]这个值设置为"delete from tableName where id=?"中的第一个"?"(当然,这里只有一个-_-!), 每次循环的语句执行效果相当于:"delete from tableName where id="+idList[i] 很明显,用了预处理可以在其后随意设置参数的类型(当然,你数据库中字段的类型肯定是固定的,所以说起来这个好处几乎可以忽视掉),但类型还是必须同数据库中的字段一致!
使用request.getParameterValue([chenkBoxName]),其返回值是一个String型的数组
然后把这个String型的数组遍历一遍,使用int型的数组获取,假设String型数组为string[]
int[] idList = new int[string.length];
for(int i=0;i<string.length;i++){
idList = Integer.parseInt(string[i]);
}
然后再使用idList里面存放的id号来进行删除操作
PreparedStatement ps = con.prepareStatement("delete from tableName where id=?");
for(int i = 0;i<idList.length;i++){
ps.setInt(1,idList[i]);
ps.execute();
}
PreparedStatement ps = con.prepareStatement("delete from tableName where id=?");
for(int i = 0;i<idList.length;i++){
ps.setInt(1,idList[i]);
ps.execute();
}
中,ps.setInt(1,idList[i]);就表示将idList[i]这个值设置为"delete from tableName where id=?"中的第一个"?"(当然,这里只有一个-_-!),
每次循环的语句执行效果相当于:"delete from tableName where id="+idList[i]
很明显,用了预处理可以在其后随意设置参数的类型(当然,你数据库中字段的类型肯定是固定的,所以说起来这个好处几乎可以忽视掉),但类型还是必须同数据库中的字段一致!