• 求救: 在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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则作者保留追究法律责任的权利。  若本文对你有所帮助,您的关注推荐是我们分享知识的动力!
  • 相关阅读:
    Linux IO模型
    linux进程管理
    shell之判断文件是否存在
    python之hashlib模块(MD5校验)
    Docker实现退出container后保持继续运行的解决办法
    Pycharm上python运行和unittest运行两种执行方式解析
    Linux du与df命令的差异
    Linux lsof命令详解
    Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
    理解Python中的闭包
  • 原文地址:https://www.cnblogs.com/chenhuzi/p/1787123.html
Copyright © 2020-2023  润新知