C# 事务处理(Transcation)
数据库事务处理是以一个单一的逻辑单元完成一系列的操作,他可以由一系列的Sql语句组成,如果在该事务中包含的操作在执行的过程中没有发生错误,那么他对数据库所作的改变就是永久的,如果一旦有错误发生,它就不会对数据库作任何修改和改变。
事务必须是原子工作单位,对于其数据的修改,要么全部执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的,如果系统只执行这些操作中的一个子集,则会破坏事务的总体目标,事务具有ACID属性:
Atomic(原子性):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全退回,全部不保留。
Consistent(一致性):事务完成或撤销后,都应该处于一致的状态。
Isolated(隔离性):多个事务同时进行,他们之间应该互补干扰,应该防止一个事务处理其他事务也要修改的数据时,不合理的存取数据和不完整的读取数据
Durable(永久性):事务提交以后,所作的工作就被永久的保存下来。
ADO.NET中的Transcation对象用于执行多个SQL语句组成的语句序列,并且除非全部语句执行成功,变动才会发生,否则回滚到事务执行前得状态。
public void ExecuteTranscation(String[] SqlStringList) //事务处理
{
this.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.Transaction = con.BeginTransaction(); //完成事务处理的前期准备工作
try
{
if (SqlStringList != null)
{
foreach (String SqlString in SqlStringList)
{
cmd.CommandText = SqlString;
cmd.ExecuteNonQuery();
}
cmd.Transaction.Commit();
}
}
catch (Exception)
{
cmd.Transaction.Rollback();
}
finally
{
this.Close();
this.Dispose();
}
}
浙公网安备 33010602011771号