在做系統數據刪除的時候,往往需要批量刪除一些數據,如何做到呢?下面是一個小例子:
有以下表單:里面有幾個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);
}
}