求救: 在web开发中的三个层次使用事务之COM+不能使用,请各位指点 Kenny

1   添加引用System.EnterpriseServices.dll  
    using System.EnterpriseServices;  

2.修改前台页面在<%Page后面添加 Transaction="Required" 

3.随便建立一个按钮,在按钮中进行如下操作:

代码
try
{
work1(
"insert into t1(a,b) values(1,2)");
work2(
"insert into t2(c,d) values(3)"); //本来是要插入两列,但我只传一个参数 这样就模仿出错,测试此事务是否执行回滚,测试下来,是不进行回滚的
ContextUtil.SetComplete();
}
catch(System.Exception except)
{
ContextUtil.SetAbort();
Response.Write(except.Message);
}

至于上面的问题,我还是找不出原因,请各位大虾指点

不过,我找相关的事务处理办法:

采用transactionscope也可以实现方法如下:

代码
1.添加引用 System.TransactionScope;
2.编写代码如下: try-catch用于捕获异常回滚事务
using (TransactionScope ts = new TransactionScope())
{
try
{
  
using (SqlConnection con = new SqlConnection("server=.;database=chemtrace;user=sa;pwd=123456"))
  {
     con.Open();
     SqlCommand cmd
= new SqlCommand("insert into t(t1,t2) values('1','2')", con);
    cmd.ExecuteNonQuery();
  }

  Service.addtest();
//调用DBHelper里另外一个方法
  ts.Complete();//用于提交事务
}
catch (Exception ex)
{
  Response.Write(ex.Message);
}
}

作者:ChenHuzi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则作者保留追究法律责任的权利。  若本文对你有所帮助,您的关注推荐是我们分享知识的动力!
原文地址:https://www.cnblogs.com/chenhuzi/p/1787123.html