classProgram
{class Result{publicT data;public stringMessage;public boolSuccess;public stringStackTrace;
}structExecuteableUnit
{public stringSQL;publicSqlParameter[] param;
}///
///执行多条SQL语句,实现数据库事务。///
/// SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])
private static Result ExecuteSqlTransaction(paramsExecuteableUnit[] 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 inexecuteableUnits)
{
command.CommandText=exeUnit.SQL;if(exeUnit.param.GetLength(1) > 0)
{foreach(SqlParameter p inexeUnit.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()
{
Success= false, Message = ex2.Message, StackTrace =ex2.StackTrace
};
}return new Result()
{
Success= false, Message = ex.Message, StackTrace =ex.StackTrace
};
}finally{//Attempt to roll back the transaction.
try{
connection.Close();
}catch(Exception ex)
{
}
}return new Result()
{
Success= true, data =result
};
}
}public static void Main(string[] args)
{
}
}