做UPDATE操作时command.ExecuteNonQuery();如何回滚?
在C#中需要做一个UPDATE处理,现不知道其中列表中总共有多少条记录需要更新,当在执行过程中间发生了更新错误,如何让前面和后面所有的数据都回滚为更新之前的状态?
如:
需更新的数据为10行,
int result =command.ExecuteNonQuery();当result=5时出现更新错误(错误原因暂不深究),后面及前面的所有数据都回滚。
在程序中如何写代码?
如果用Try{}catch{}语句如何返回这个错误?
------解决方案--------------------你把它放在事务里面
using(//事务)
{
try
{
int result =command.ExecuteNonQuery();
trans.Commit(); //提交事务
}
catch()
{
trans.Rollback(); //回滚事务
}
}
------解决方案--------------------如果你指的是数据库回滚就用事务,如果指的是程序内存回滚就自己写逻辑吧,不会特别复杂。
------解决方案--------------------C# code
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();
}