[C#新手入门 八] SqlRowUpdatedEventHandler 是干嘛用的?

adapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated); 这句话是干嘛用的?

  1. 【MSDN官方文档说明】
    在对数据源执行命令后的 Update 过程中发生。 尝试进行更新,因此激发了该事件。

  2. 【实现原理】
    利用SqlDataAdapter.Update(DataTable) 批量操作数据时(如Insert操作),当没有事物处理时,如果入库出现致命错误(如主键冲突),SQL语句就会停止。如何才能实现SQL语句不停止,继续执行剩下的DataTable入库,这时可利用SqlDataAdapter.RowUpdated事件来实现。
    事件是这样定义的:public event SqlRowUpdatedEventHandler RowUpdated。实现原理就是定阅这个事件,当更新某行出错时,清除本行,在回调Insert方法。

adapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);

//OnRowUpdated主要用于插入出错时,是否忽略错误继续更新
protected void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
   // If this is an insert, then skip this row.
   if (e.StatementType == StatementType.Insert)
   {
       e.Status = UpdateStatus.SkipCurrentRow;
   }
}
  1. 【实践经验】
    我们在项目实践中如果使用的事务,可以不订阅这个实践,在出错时返回到catch钟,在catch中rollback即可实现事务处理。

  2. 【数据适配器的事件说明】
    • OnRowUpdating:在数据行更新前执行
    • OnRowUpdated:在数据行更新后执行。其最佳用法是检查单条更新语句的执行结果。

SqlRowUpdatedEventArgs属性
属性 描述
Command 要执行的数据命令
Errors 错误
Row 要更新的行
StatementType 要执行的命令类型,可能为Select、Insert、Delete和Update
RecordsAffected 要影响的行数
TableMapping 更新所使用的DataTableMapping

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiangcns

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值