静心-心经cjh00758复制地址
公告栏
痛苦是一种享受,磨难是享受的资本.不断的追求,痛并快乐着.埋头做事,抬头做人!
控制面板
日历
<2008年4月>
SuMoTuWeThFrSa
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
留言簿(6)
随笔档案
文章档案
最新评论
做项目时需要实现数据库的事务,觉得每次用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);
    }
   }
  }
 
作者:陈金华 阅读() 评论()  编辑 发表于:2006-10-10 15:31