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

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);
}
}

 

你可能感兴趣的:(web开发)