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

上一篇 / 下一篇  2008-02-15 16:07:00 / 个人分类:说说数据

 

在实际工作的中,很多人经常需要实现数据库的事务,如果每次都用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);
    }
   }
  }

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-06  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 1769
  • 日志数: 49
  • 建立时间: 2007-11-09
  • 更新时间: 2008-04-07

RSS订阅

Open Toolbar