zoukankan      html  css  js  c++  java
  • 自己写的实现数据库事务的简单方法ExecuteSqlTran()

    做项目时需要实现数据库的事务,觉得每次用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);
        }
       }
      }

    方法虽然简单,但确实省了不少时间:)

    (作者:李天平    转载请注明)

  • 相关阅读:
    ObjectARX 学习笔记007:创建模态对话框的一般步骤
    c#的DateTime.Now函数详解
    LinQ 使用案例1
    LinQ 泛型方法Array>ForEach在数组中进行迭代并调用自定义的委托
    LinQ Lambda表达式用作泛型活动
    win7x64bit VS2010 CAD2013断点 调试 捕捉成功,困扰一周的问题解决了
    法兰数据库设计方案
    关于CAD的开发思路
    法兰程序CAD开发的进展
    法兰动态块设计思路
  • 原文地址:https://www.cnblogs.com/ltp/p/289647.html
Copyright © 2011-2022 走看看