zoukankan      html  css  js  c++  java
  • 事务处理笔记《一》ADO.NET级别的事务

    现在我们对事务的概念和原理都有所了解了,并且作为已经有一些基础的C#开发者,我们已经熟知编写数据库交互程序的一些要点,即:

    1)使用SqlConnection类的对象的Open()方法建立与数据库服务器的连接。

    2)然后将该连接赋给SqlCommand对象的Connection属性。

    3)将欲执行的SQL语句赋给SqlCommandCommandText属性。

    4)通过SqlCommand对象进行数据库操作。

    创建一个ADO.NET事务是很简单的,需要定义一个SqlTransaction类型的对象。SqlConnection OleDbConnection对象都有一个BeginTransaction 方法,它可以返回 SqlTransaction 或者OleDbTransaction 对象。然后赋给SqlCommand对象的Transcation属性,即实现了二者的关联。为了使事务处理可以成功完成,必须调用SqlTransaction对象的Commit()方法。如果有错误,则必须调用Rollback()方法撤销所有的操作。

     

    事务处理程序的要点:

    (1)创建事务

    (2)事务与要处理的每条命令关联起来

    (3)事务的提交与回滚

    基于以上认识,下面我们就开始动手写一个基于ADO.NET的事务处理程序。                                         

    string conString = "data source=127.0.0.1;database=codematic;user id=sa;
    
    password=";
    
    SqlConnection myConnection = new SqlConnection(conString);
    
    myConnection.Open();
    
    //启动一个事务
    
    SqlTransaction myTrans = myConnection.BeginTransaction();
    
    //为事务创建一个命令
    
    SqlCommand myCommand = new SqlCommand();
    
    myCommand.Connection = myConnection;
    
    myCommand.Transaction = myTrans;
    
    try
    
    {
    
        myCommand.CommandText = "update P_Product set Name='电脑2' where Id=52";
    
        myCommand.ExecuteNonQuery();
    
        myCommand.CommandText = "update P_Product set Name='电脑3' where Id=53";
    
        myCommand.ExecuteNonQuery();
    
        myTrans.Commit();//提交
    
        Response.Write("两条数据更新成功");
    
    }
    
    catch (Exception ex)
    
    {
    
        myTrans.Rollback();//遇到错误,回滚
    
        Response.Write(ex.ToString());              
    
    }
    
    finally
    
    {
    
        myConnection.Close();
    
    }

    ADO.NET事务的优势和限制如下。

    优势:

    l  简单。

    l  和数据库事务差不多快。

    l  事务可以跨越多个数据库访问。

    l  独立于数据库,不同数据库的专有代码被隐藏了。

    限制:事务执行在数据库连接层上,所以需要在执行事务的过程中手动地维护一个连接。

     

    注  意

    所有命令都必须关联在同一个连接实例上,ADO.NET事务处理不支持跨多个连接的事务处理。

          选自《亮剑.NET. .NET深入体验与实战精要》一书 5.4 节。

  • 相关阅读:
    计算机视觉资源合集
    EMZ-搭建DL模型的最简便的方式 | 附项目地址
    在边缘设备上拟合大型神经网络的方法总结
    归一化方法总结 | 又名“BN和它的后浪们“
    名词解释 | 论文中的Ablation study
    知识蒸馏的简要概述
    如何看待计算机视觉未来的走向(二)从产品的角度聊一聊
    STL源码分析--functional
    STL源码分析--algorithm
    STL源码分析--bitset
  • 原文地址:https://www.cnblogs.com/abc8023/p/3957294.html
Copyright © 2011-2022 走看看