MyMenu
不用SqlTransaction执行数据库事务处理


Admin | 2008-2-11 20:09:07 | Nums: 973 Times|  上一篇  下一篇 本文来自:数据库Sql,VFP,Access 打印本页 

您尚未登陆,本站复制功能仅对会员开放    〖注 册〗 〖登 陆〗

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



会员评论列表:
正在更新的动画正在加载数据,请稍后……
针对本篇文章或本站,请您发表个人的建议或批评!

大众三七网 大众计算机学习网 谷歌搜索 百度搜索 本站仅与内容具备一定实际意义的原创网站交换友情链接,力争为大众做出更优质的服务!

All Rights Reserved 本站备案信息:滇ICP备08002715号 〖264人在线〗 站长联系方式 Email:dzwebs@126.com 关于本站