C# SQL Server+;删除多个ID
我想找出删除ID复选框的好方法,如下所示,对于插入,我使用SqlBulkCopy,但我认为没有类似的类可以删除。如果选中复选框,我现在只能考虑删除1乘1,但不确定这是否是最好的方式,foreach行的最大计数约为15,是否可以包括1乘1删除的事务回滚?谢谢C# SQL Server+;删除多个ID,c#,sql,C#,Sql,我想找出删除ID复选框的好方法,如下所示,对于插入,我使用SqlBulkCopy,但我认为没有类似的类可以删除。如果选中复选框,我现在只能考虑删除1乘1,但不确定这是否是最好的方式,foreach行的最大计数约为15,是否可以包括1乘1删除的事务回滚?谢谢 protected void DeleteMsg_Click(object sender, EventArgs e) { UserBLL userBll = new UserBLL();
protected void DeleteMsg_Click(object sender, EventArgs e)
{
UserBLL userBll = new UserBLL();
foreach (GridViewRow row in uigvUserInbox.Rows)
{
CheckBox chkSelected = (CheckBox)row.FindControl("chkSelect");
if (chkSelected.Checked)
{
try
{
// DataKey currentDataKey = uigvUserInbox.DataKeys[row.DataItemIndex];
// userBll.DeleteMessage(currentDataKey.Value.ToString()); // SQL delete
}
catch (Exception ex)
{
// clsLogging logError = new clsLogging();
// logError.WriteLog(ex);
}
}
}
}
你可以使用In子句 从id所在的表中删除(id1、id2、id3)
这只需要一个查询。将适当的方法添加到
UserBLL
类中,该类在SQL端使用执行删除操作,其中yourMappedIDColumn位于其中(这里是以逗号分隔的数据键列表)
类UserBLL
{
内部void DeleteMessages(列表datakeystelete)
{
//从DataKeyStore中Id所在的tableName中删除
}
}
检索变量中的所有数据键并将其传递给上面的metod
protected void DeleteMsg_Click(object sender, EventArgs e)
{
UserBLL userBll = new UserBLL();
List<DataKey> dataKeysToDelete = new List<DataKey>();
foreach (GridViewRow row in uigvUserInbox.Rows)
{
CheckBox chkSelected = (CheckBox)row.FindControl("chkSelect");
if (chkSelected.Checked)
{
dataKeysToDelete.Add(uigvUserInbox.DataKeys[row.DataItemIndex]);
}
}
try
{
userBll.DeleteMessages(dataKeysToDelete);
}
catch (Exception ex)
{
// clsLogging logError = new clsLogging();
// logError.WriteLog(ex);
}
}
protectedvoid DeleteMsg\u单击(对象发送方,事件参数e)
{
UserBLL UserBLL=新的UserBLL();
List datakeystedelete=新列表();
foreach(uigvUserInbox.Rows中的GridViewRow行)
{
复选框chkSelected=(复选框)row.FindControl(“chkSelect”);
如果(chkSelected.Checked)
{
添加(uigvUserInbox.DataKeys[row.DataItemIndex]);
}
}
尝试
{
userBll.DeleteMessages(datakeystelete);
}
捕获(例外情况除外)
{
//CLSLOGING logError=新的CLSLOGING();
//logError.WriteLog(ex);
}
}
protected void DeleteMsg_Click(object sender, EventArgs e)
{
UserBLL userBll = new UserBLL();
List<DataKey> dataKeysToDelete = new List<DataKey>();
foreach (GridViewRow row in uigvUserInbox.Rows)
{
CheckBox chkSelected = (CheckBox)row.FindControl("chkSelect");
if (chkSelected.Checked)
{
dataKeysToDelete.Add(uigvUserInbox.DataKeys[row.DataItemIndex]);
}
}
try
{
userBll.DeleteMessages(dataKeysToDelete);
}
catch (Exception ex)
{
// clsLogging logError = new clsLogging();
// logError.WriteLog(ex);
}
}