源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#实现数据库事务示例分享

  • 时间:2022-12-08 07:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#实现数据库事务示例分享
[u]复制代码[/u] 代码如下:
using System; using System.Data.SqlClient; namespace ExecuteSqlTran {     class Program     {         class Result<T>         {             public T data;             public string Message;             public bool Success;             public string StackTrace;         }         struct ExecuteableUnit         {             public string SQL;             public SqlParameter[] param;         }         /// <summary>         /// 执行多条SQL语句,实现数据库事务。         /// </summary>         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>         private static Result<int> ExecuteSqlTransaction(params ExecuteableUnit[] executeableUnits)         {             using (SqlConnection connection = new SqlConnection(""))             {                 connection.Open();                 SqlCommand command = connection.CreateCommand();                 SqlTransaction transaction = connection.BeginTransaction();                 command.Connection = connection;                 command.Transaction = transaction;                 int result = 0;                 try                 {                     foreach(ExecuteableUnit exeUnit in executeableUnits)                     {                         command.CommandText = exeUnit.SQL;                         if(exeUnit.param.GetLength(1) > 0)                         {                             foreach(SqlParameter p in exeUnit.param)                                 command.Parameters.Add(p);                         }                         result += command.ExecuteNonQuery();                     }                     transaction.Commit();                 }                 catch (Exception ex)                 {                     // Attempt to roll back the transaction.                     try                     {                         transaction.Rollback();                     }                     catch (Exception ex2)                     {                         return new Result<int>()                         {                             Success = false, Message = ex2.Message, StackTrace = ex2.StackTrace                         };                     }                     return new Result<int>()                     {                         Success = false, Message = ex.Message, StackTrace = ex.StackTrace                     };                 }                 finally                 {                     // Attempt to roll back the transaction.                     try                     {                   connection.Close();                     }                     catch (Exception ex)                     {                     }                 }                 return new Result<int>()                 {                     Success = true, data = result                 };             }         }         public static void Main(string[] args)         {         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部