当前位置:Gxlcms > 数据库问题 > C# 执行多条SQL更新语句,实现数据库事务

C# 执行多条SQL更新语句,实现数据库事务

时间:2021-07-01 10:21:17 帮助过:16人阅读

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) { } }

 

C# 执行多条SQL更新语句,实现数据库事务

标签:

人气教程排行