日期:2010-01-24  浏览次数:20496 次

网站中的批量删除很常见,特别是对在gridview中做批量删除。我们一般的做法是循环到勾选的就调用过程直接删除。这样的话个人觉得效率不是很高,如果是上百上千的数据要删除,那就得调用试行上百次。其实我们可以运用动态构建删除语句进行高效批量删除,无论你选多少要删除的数据,只需调用试行一次。

底下写的存储过程删除语句与上图无关,上图是常见的在gridview中做批量删除。使用存储过程:

  1. ---------------------------------------------------------------------------------------  
  2. /* *作    者:lin sen *功能说明:动态构建SQL语句之删除 *编写日期:2010年9月27日 **/  
  3. ---------------------------------------------------------------------------------------  
  4. drop procedure proc_DeleteMessagegocreate procedure proc_DeleteMessage(      
  5. @condition          
  6. varchar(500)              
  7. --删除条件(多个)             
  8.  )asbegin      
  9. declare @sql varchar(200)      
  10. --动态构建删除语句      
  11. select @sql="Delete from MessageInfo where "+@condition     
  12.  --试行语句    exec (@sql)endgo 

在SQL查询分析器上调用该过程:(传入的条件是唯一标识列名和所选中的值)

  1. exec proc_DeleteMessage "MessageID=240 or MessageID=241 or MessageID=242..." 

在SQL调用看不太清楚,我们来看下Web中的前台调用与试行。

  1.  //删除按钮单击事件          
  2. protected void LBtn_Del_Click(object sender, EventArgs e)          
  3. {              
  4. StringBuilder sb = new StringBuilder();              
  5. for (int i = 0; i < GV_class.Rows.Count; i++)           
  6.  {                  
  7. CheckBox checkbox = (CheckBox)GV_class.Rows[i].FindControl("checkbox");                  
  8. if (checkbox.Checked == false)               
  9.  {