1 添加引用System.EnterpriseServices.dll
using System.EnterpriseServices;
2.修改前台页面在<%Page后面添加 Transaction="Required"
3.随便建立一个按钮,在按钮中进行如下操作:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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也可以实现方法如下:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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);
}
}