classProgram {classResult<t> { PublicT data; Public stringMessage; Public BOOLSuccess; Public stringStackTrace; } structExecuteableunit { Public stringSQL; Publicsqlparameter[] param; } /// <summary> ///executes multiple SQL statements to implement database transactions. /// </summary> /// <param name= "Sqlstringlist" >hash table for the SQL statement (key is the SQL statement, value is the statement's sqlparameter[])</param> Private Staticresult<int> Executesqltransaction (paramsexecuteableunit[] executeableunits) { using(SqlConnection connection =NewSqlConnection ("") {connection. Open (); SqlCommand Command=connection. CreateCommand (); SqlTransaction Transaction=connection. BeginTransaction (); Command. Connection=connection; Command. Transaction=transaction; intresult =0; Try { foreach(Executeableunit Exeunitinchexecuteableunits) {Command.commandtext=Exeunit.sql; if(ExeUnit.param.GetLength (1) >0) { foreach(SqlParameter Pinchexeunit.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 Newresult<int>() {Success=false, Message = Ex2. Message, StackTrace =EX2. StackTrace}; } return Newresult<int>() {Success=false, Message = ex. Message, StackTrace =Ex. StackTrace}; } finally { //Attempt to roll back the transaction. Try{connection. Close (); } Catch(Exception ex) {}}return Newresult<int>() {Success=true, data =result}; } } Public Static voidMain (string[] args) { } }
C # executes multiple SQL UPDATE statements to implement database transactions