如何一次删除多条记录?

zylt 2008-06-17 03:20:07
从一个表select出多条记录,利用Checkbox选中要删除的记录。执行一次Delete可以全部删除吗?
...全文
242 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
m2shuai 2008-06-17
  • 打赏
  • 举报
回复
看你是怎么做的了
如果使用的jsp+servlet 我给你短js拿去用
js:
function deletePersonnel(){
var personnelBox=document.getElementsByName("Personnelcheckbox");
var box ="";
for(j = 0;j<personnelBox.length;j++){
if( personnelBox[j].checked){
box+=personnelBox[j].value+",";
}
}
if(box==""){
alert("请选择要删除的部门");
return;
}
var isdelete = confirm('您确认要删除吗?');
if(isdelete){

document.personnelAllForm.deletePersonnelHidden.value = box;
document.personnelAllForm.submit();
}
else{
window.location.reload();
}
}
在servlet或action里这样写:
String str = request.getParameter("deletePersonnelHidden");
String[] did = str.split(",");
for(int i = 0; i < did.length; i++){
//did[i]就是要删除数据的id 你在delete from table where id = did[i]就可以了
}
这里要说的是 jsp那一定要做好 看好你的命名;在js做测试用 alert(box);这样就可以看看可以得到id的集合没有
不行再问 我也是前阵子刚刚会的
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复
请教,怎么看结贴率?
dou_ye 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sd5816690 的回复:]
delete from tableName where id in(从数组中得到的数据,之间用“,”隔开,如果是字符串就加上单引号)
[/Quote]
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复
只要是从数组中取值,你就得用循环
老紫竹 2008-06-17
  • 打赏
  • 举报
回复
楼主截止到2008-06-17 15:41:15的汇总数据:
发帖数:2
结贴数:0
结贴率: 0.00%
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复


不用循环,你怎么知道用户选了几个呀,你不好确定呀
sd5816690 2008-06-17
  • 打赏
  • 举报
回复
delete from tableName where id in(从数组中得到的数据,之间用“,”隔开,如果是字符串就加上单引号)
zylt 2008-06-17
  • 打赏
  • 举报
回复
感谢,我看到了,你的方法比直接用循环一条条操作好多了,但里面还是用到了循环。有没有更好的方法?
zylt 2008-06-17
  • 打赏
  • 举报
回复
可以不用循环吗?我觉得应该有简单的方法,一次就可以执行,用循环的开销太大了,如果用户一次选择的记录太多,循环就不合适了。
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复
你好好看一下我给的批量删除方法
burningice44 2008-06-17
  • 打赏
  • 举报
回复
得到所有的要删除的记录id,
删除时根据id利用循环删除。
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复
一样呀,将它的ID 存入数组
zylt 2008-06-17
  • 打赏
  • 举报
回复
我的问题是删除用Checkbox标记好的记录,而不是全部记录。待删除记录的Id值我可以存于数组中,不知道where条件可以用数组吗?
yqf19851101 2008-06-17
  • 打赏
  • 举报
回复
批量删除

一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。
//批量新增、批量修改
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO Users VALUES(?,?,?)"
);
User[ ] users = ...;
for(int i=0; i<users.length; i++) {//变换参数执行多次
stmt.setInt(1, users[i].getName());
stmt.setInt(2, users[i].getAge());
stmt.setInt(3, users[i].getShape());
stmt.addBatch( );
}
int[ ] counts = stmt.executeBatch();
//删除数据
PreparedStatement prepstmt = conn.prepareStatement(
"DELETE FROM Users WHERE USERID=? "
);
User[ ] users = ...;
for(int i=0; i<users.length; i++) {//变换参数执行多次
prepstmt.setInt(1, users[i].getId());
prepstmt.addBatch( );
}
int[ ] counts = prepstmt.executeBatch();
prepstmt.close();
conn.close();
xql80329 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tonybao 的回复:]
delete from .... where ....

答案是肯定的,可以一次删除多条记录!!
[/Quote]
lblxiaoyu 2008-06-17
  • 打赏
  • 举报
回复
可以 那是必须的 呵呵
可以把要删除的标示传过去就可以了
sql语句 delete 数据的时候加上条件就可以了
tonybao 2008-06-17
  • 打赏
  • 举报
回复
delete from .... where ....

答案是肯定的,可以一次删除多条记录!!
TRMeister 2008-06-17
  • 打赏
  • 举报
回复
可以~~
tonybao 2008-06-17
  • 打赏
  • 举报
回复
delete from ..... where ....

答案是肯定的,可以删除!!

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧