记录点滴收获,汇聚知识乐园

脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达

导航

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();

        }

    }

posted on 2011-10-23 00:05  guowenhui  阅读(644)  评论(0)    收藏  举报