zoukankan      html  css  js  c++  java
  • 对于websharp事务处理的使用心得

           这里用了10200000000000000是为了使程序产生异常,而观察Product p1是否会被添加到数据库中,如果使用了事务处理,则p1不被添加到数据库;如果未使用事务处理,则p1仍然被添加到数据库,见以下代码:

    加事务处理的部分源代码
     private void NormalInsert()
        
    {
            DatabaseProperty dbp 
    = new DatabaseProperty();
            dbp.DatabaseType 
    = DatabaseType.MSSQLServer;
            dbp.ConnectionString 
    = "server=(local);uid=sa;pwd=sa;database=WebsharpTest";

            PersistenceManager pm 
    = PersistenceManagerFactory.Instance().Create(dbp);

            Transaction t 
    = pm.CurrentTransaction;     //获取当前事务对象
            t.Begin();                                   //开始事务
            try
            
    {
                Product p1 
    = new Product("liping"10000);
                pm.PersistNew(p1);
                Product p0 
    = new Product(this.producttxt.Text, 1020000000000000000);
                pm.PersistNew(p0);
                pm.Flush();
                t.Commit();                                  
    //提交事务
            }

            
    catch
            
    {
                t.Rollback();
            }

            
    finally
            
    {
                pm.Close();
            }

    }

     得到的结果为:

    不加事务处理的源代码
     private void NormalInsert()
        
    {
            DatabaseProperty dbp 
    = new DatabaseProperty();
            dbp.DatabaseType 
    = DatabaseType.MSSQLServer;
            dbp.ConnectionString 
    = "server=(local);uid=sa;pwd=sa;database=WebsharpTest";

            PersistenceManager pm 
    = PersistenceManagerFactory.Instance().Create(dbp);

            
    //Transaction t = pm.CurrentTransaction;     //获取当前事务对象
            
    //t.Begin();                                   //开始事务
            try
            
    {
                Product p1 
    = new Product("liping"10000);
                pm.PersistNew(p1);
                Product p0 
    = new Product(this.producttxt.Text, 1020000000000000000);
                pm.PersistNew(p0);
                pm.Flush();
            
    //    t.Commit();                                  //提交事务
            }

            
    catch
            
    {
             
    //   t.Rollback();
            }

            
    finally
            
    {
                pm.Close();
            }

    }

    运行结果:

     说明加事务处理的产生了事务回滚,p1没有插入数据库中,不加事务处理的p1插入到数据库中

  • 相关阅读:
    普通文件的上传(表单上传和ajax文件异步上传)
    React Ant Design+Node.js Express+Mysql实现后端分页(带富文本编辑器)
    Express中增删改查相关的中间件
    React中使用富文本编辑器react-draft-wysiwyg
    Express中aixos请求的(批量)删除用POST方法,其它请求的(批量)删除可以用DELETE方法
    React中将字符串转义成html语句
    Vue中如何设置代理跨域请求数据
    React中如何设置代理跨域请求数据
    axios发送post请求,服务端无法正常获取参数(比如:node服务器无法通过req.body获取参数)解决方案
    LeetCode-162.寻找峰值
  • 原文地址:https://www.cnblogs.com/liping13599168/p/618606.html
Copyright © 2011-2022 走看看