gridview中做批量删除。我们一般的做法是循环到勾选的就调用过程直接删除。这样的话个人觉得效率不是很高,如果是上百上千的数据要删除,那就得调用试行上百次。其实我们可以运用动态构建删除语句进行高效批量删除,无论你选多少要删除的数据,只需调用试行一次。
底下写的存储过程删除语句与上图无关,上图是常见的在gridview中做批量删除。使用存储过程:
---------------------------------------------------------------------------------------
/*
*作 者:lin sen
*功能说明:动态构建sql语句之删除
*编写日期:2010年9月27日
*
*/
---------------------------------------------------------------------------------------
drop procedure proc_deletemessage
go
create procedure proc_deletemessage
(
@condition varchar(500) --删除条件(多个)
)
as
begin
declare @sql varchar(200)
--动态构建删除语句
select @sql='delete from messageinfo where '+@condition
--试行语句
exec (@sql)
end
go
在sql查询分析器上调用该过程:(传入的条件是唯一标识列名和所选中的值)
exec proc_deletemessage 'messageid=240 or messageid=241 or messageid=242...'
在sql调用看不太清楚,我们来看下web中的前台调用与试行。
//删除按钮单击事件
protected void lbtn_del_click(object sender, eventargs e)
{
stringbuilder sb = new stringbuilder();
for (int i = 0; i < gv_class.rows.count; i++)
{
checkbox checkbox = (checkbox)gv_class.rows[i].findcontrol("checkbox");
if (checkbox.checked == false)
{
lab_note.text = "请选择要删除信息";
lab_note.style.add("color", "red");
}
else
{
messagemodel.c_id = int32.parse(gv_class.rows[i].cells[3].text.trim());//选中的唯一标识列值
sb.append("messageid=");
sb.append(messagemodel.c_id);
sb.append(" or ");
}
}
sb.append("messageid=null");
messagemodel.sqlstr = sb.tostring();//动态的条件语句传给实体
int j = deleteclass(messagemodel);
//.....
}
///
/// 删除信息
///
///
///
public int deleteclass(messagemodel memodel)
{
int rowsaffected;
sqlparameter[] parameter = { new sqlparameter("@sqlstr", sqldbtype.int) };
parameter[0].value = memodel.sqlstr;
dbhelpersql.runintprocname("proc_deletemessage", out rowsaffected, parameter);
return rowsaffected;
}
在web前台动态构建并调用过程时我们需要注意几点:
1、我们勾选的列一般都是主键唯一标识列,根据它进行删除。
2、如果你的主键是字符串不是整形,那么上面需要改动一下sb.append("messageid='");sb.append(messagemodel.c_id);
sb.append("' or ");只是多个单引号。
3、在循环完后注意加上sb.append("messageid=null");结束。个人认为主键不可能空的,所以这个条件排除。不加的动态语句后面多个个or;
但是千万别在条件中加 or 1=1;那样不管多少都成立,会被整个数据删除。
4、把构建的语句用参数传入,作为删除条件。
我的博物馆故事 官方安卓版v1.61.2
我的博物馆故事是一款以消除为主题的经营养成类手游,在这里玩家
专业模拟飞行10 手机版v12.2.4
专业模拟飞行10安卓版是一款飞行休闲手游,顶尖的物理飞行引擎
动物起义战斗模拟器二琳同款 最新版v4.1.1
动物起义战斗模拟器是一个非常有趣的模拟类游戏,玩家可以召唤各
迷你世界七周年 安卓手机版v1.43.0
迷你世界7周年是一款由《迷你世界》官方推出的庆祝特别版本,在
劫后公司无限资源版 v1.0.5.1
劫后公司内置菜单版是游戏的破解版本,在该版本中为玩家提供了内