不用SqlTransaction也能实现数据库的事务

来源:岁月联盟 编辑:zhuzhu 时间:2008-02-03

在实际工作的中,很多人经常需要实现数据库的事务,假如每次都用SqlTransaction 写代码,是一件非凡麻烦的事,下面我们来介绍一个通用的方法放在数据层,以此来达到复用的目的并能满足一般情况下的需求。

可以同时执行两条SQL语句的方法:

public static void ExecuteSqlTran(string SQLString1,string SQLString2)  {   using (SqlConnection conn = new SqlConnection(strDBConnectionString))   {    conn.Open();    SqlCommand cmd = new SqlCommand();    cmd.Connection=conn;        SqlTransaction tx=conn.BeginTransaction();       cmd.Transaction=tx;        try    {          cmd.CommandText=SQLString1;     cmd.ExecuteNonQuery();     cmd.CommandText=SQLString2;     cmd.ExecuteNonQuery();          tx.Commit();         }    catch(System.Data.SqlClient.SqlException E)    {       tx.Rollback();     throw new Exception(E.Message);    }   }  }

假如有多条SQL语句需要放在一个事务里实现执行,大家就可以用下面这个方法:

/// <summary>  /// 执行多条SQL语句,实现数据库事务。  /// </summary>  /// <param name="SQLStringList">多条SQL语句</param>    public static void ExecuteSqlTran(ArrayList SQLStringList)  {   using (SqlConnection conn = new SqlConnection(connectionString))   {    conn.Open();    SqlCommand cmd = new SqlCommand();    cmd.Connection=conn;        SqlTransaction tx=conn.BeginTransaction();       cmd.Transaction=tx;        try    {          for(int n=0;n<SQLStringList.Count;n  )     {      string strsql=SQLStringList[n].ToString();      if (strsql.Trim().Length>1)      {       cmd.CommandText=strsql;       cmd.ExecuteNonQuery();      }     }               tx.Commit();         }    catch(System.Data.SqlClient.SqlException E)    {       tx.Rollback();     throw new Exception(E.Message);    }   }  }