在做系统数据删除的时候,往往需要批量删除一些数据,如何做到呢?下面是一个小例子:
有以下表单:里面有几个checkbox,如何当点击第一个checkbox而同时选择所有的checkbox呢?可以用后面的script方法:
<form>
<table >
<tr>
<td
<input type="checkbox" name="ifAll" id="ifAll" onClick="checkAll()">
</td>
<tr>
<td><input type="checkbox" name="selectFlag" value="checkbox1"></td>
</tr>
<tr>
<td><input type="checkbox" name="selectFlag" value="checkbox1"></td>
</tr>
<tr>
<td><input type="checkbox" name="selectFlag" value="checkbox2"></td>
</tr>
<tr>
<td><input type="checkbox" name="selectFlag" value="checkbox3"></td>
</tr>
<table >
</form>
<script type="text/javascript">
function checkAll() {
for (var i = 0; i < document.getElementsByName("selectFlag").length; i++) {
document.getElementsByName("selectFlag")[i].checked = document.getElementById("ifAll").checked;
}
}
</script>
用以下方法可以得到所有checkbox的值:
String[] userIds = request.getParameterValues("selectFlag");//返回一个数组
然后进行删除:
调用方法:UserManager.getInstance().deleteUser(userIds);
(具体的方法deleteUser(userIds)如下)
public void deleteUser(String[] userIds) {
StringBuffer sbSql = new StringBuffer();
for (int i =0; i < userIds.length; i++) {
sbSql.append("'")
.append(userIds[i])
.append("',");
}
String sql = "delete from t_user where user_id in (" + sbSql.substring(0, sbSql.length() - 1) + ")";
Connection conn = null;
Statement stmt = null;
try{
conn = DB.getConn();//DB是一个链接数据库的javabeen
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}catch(SQLException e) {
e.printStackTrace();
}finally {
DB.close(stmt);
DB.close(conn);
}
}