做UPDATE操作时command.ExecuteNonQuery();如何回滚?

huygtt 2012-09-12 09:45:10
在C#中需要做一个UPDATE处理,现不知道其中列表中总共有多少条记录需要更新,当在执行过程中间发生了更新错误,如何让前面和后面所有的数据都回滚为更新之前的状态?
如:
需更新的数据为10行,
int result =command.ExecuteNonQuery();当result=5时出现更新错误(错误原因暂不深究),后面及前面的所有数据都回滚。
在程序中如何写代码?
如果用Try{}catch{}语句如何返回这个错误?
...全文
312 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huygtt 2012-09-15
  • 打赏
  • 举报
回复
谢谢几位的答复
shizhu820228 2012-09-12
  • 打赏
  • 举报
回复

using (SqlCommand cmd = con.CreateCommand())
{
SqlTransaction tran = con.BeginTransaction();
cmd.Transaction = tran;
try
{
foreach (string item in strSQL)
{
cmd.CommandText = item;
cmd.ExecuteNonQuery();

}

tran.Commit();//如果都成功那么提交事物

}
catch (Exception ex)
{
index = -1;
//throw new Exception(ex.Message);
tran.Rollback();
}

//index = com.ExecuteNonQuery();
}
cheng2005 2012-09-12
  • 打赏
  • 举报
回复
如果你指的是数据库回滚就用事务,如果指的是程序内存回滚就自己写逻辑吧,不会特别复杂。
天下如山 2012-09-12
  • 打赏
  • 举报
回复
你把它放在事务里面
using(//事务)
{
try
{
int result =command.ExecuteNonQuery();
trans.Commit(); //提交事务
}
catch()
{
trans.Rollback(); //回滚事务
}
}

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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