private void work1()
        {
            string str = "server=.;database=hotel;user=tmp;password=tmp";
            SqlConnection conn = new SqlConnection(str);
            SqlCommand cmd1 = new SqlCommand("insert into sheet3(iddd) values('12')", conn);
            conn.Open();
            cmd1.ExecuteNonQuery();
            conn.Close();            string str1 = "server=.;database=hotel;user=tmp;password=tmp";
            SqlConnection conn1 = new SqlConnection(str1);
            SqlCommand cmd2 = new SqlCommand("insert into sheet3(iddd) values('1111111111111111111111')", conn1);
            conn1.Open();
            cmd2.ExecuteNonQuery();
            conn1.Close();
        }        private void work2()
        {
            string str = "server=.;database=hotel;user=tmp;password=tmp";
            SqlConnection conn = new SqlConnection(str);
            SqlCommand cmd2 = new SqlCommand("insert into sheet3(iddd) values('1111111111111111111111')", conn);
            conn.Open();
            cmd2.ExecuteNonQuery();
            conn.Close();
        } 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                
                work1();
                work2();//此方法会有异常
            }
            catch 
            {
                ContextUtil.SetAbort();
            }

        }
work2方法处理有异常的时候  work1照样执行,
有什么办法解决吗?

解决方案 »

  1.   

    你的意思是不是如果work2出现异常,那work1操作就不让它执行了?
      

  2.   

    是的,想要得到这种结果work2有问题的时候 work1不执行
      

  3.   

    http://blog.csdn.net/xiaojie0710/archive/2007/04/15/1565863.aspx
    看看用数据库回滚应该可以满足你的要求,代码太长了,自己去看看吧
      

  4.   

    是不是要用system.EnterpriseServices看资料说ContextUtil.SetAbort()可以回滚方法内的事务,但我实验 还是无法回滚
      

  5.   

    你在work1  work2 中必须把你的sqlcommand绑定事物  捕捉异常的时候 调用ContextUtil.SetAbort()才可以回回滚事物