日期:2014-05-18  浏览次数:20645 次

事物回滚的问题
C# code

            using (SqlConnection Conn = new SqlConnection(connectString))
            {
                Conn.Open();
                using (SqlTransaction Tran = Conn.BeginTransaction())
                {
                    using (SqlCommand Comm = new SqlCommand() { Connection = Conn, Transaction = Tran })
                    {
                        try
                        {
                            Comm.CommandType = CommandType.StoredProcedure;
                            Comm.CommandText = "存储过程1";
                            Comm.Parameters.AddRange(MaParas(order));
                            Comm.ExecuteNonQuery();
                            
                            Comm.CommandType = CommandType.StoredProcedure;
                            Comm.CommandText = "存储过程2";
                            for (int i = 0; i < ModelList.Count; i++)
                            {
                                Comm.Parameters.Clear();
                                Comm.Parameters.AddRange(LbParas(ModelList[i]));
                                Comm.ExecuteNonQuery();
                            }
                            Tran.Commit();                            
                        }
                        catch (Exception ex)
                        {
                            Tran.Rollback();
                        }
                    }
                }
            }




我想问,当在“存储过程2”出现错误的时候,怎么回滚“存储过程1”的操作呢

------解决方案--------------------
你不是已经写好了吗?

------解决方案--------------------
SqlTransaction Tran = Conn.BeginTransaction()
已经开启事务.
自动回滚
如果两存储过程参数差不多,可放在一起更好