美文网首页
C#事务处理SqlTransaction

C#事务处理SqlTransaction

作者: 大龙10 | 来源:发表于2022-01-19 07:00 被阅读0次

《Visual C# 2008开发技术实例详解》读书笔记
作者:李继攀等
出版社:电子工业出版社
出版时间:2008-08

一、事务处理

  事务处理是一种机制,用来管理必须成批执行的SQL操作,以保证数据库不包含不完整的操作结果。

二、术语

  • 事务(transaction)指一组SQL语句。
  • 回退(rollback)指撤销指定的SQL语句的过程。
  • 提交(commit)指将未存储的SQL语句结果写入数据库。
  • 保留点(savepoint)指事物处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事物处理不同)。

三、.NET的处理方式

  事务处理是包含一个或多个任务的一组关联操作的提交或回滚操作。在事务执行的过程中,保证事务具有基本的ACID属性(原子、一致性、隔离和持久性)。
  .NETFramework的事务管理支持多种事务处理方式,包括显性事务和隐性事务、本地事务和分布式事务、事务嵌套、事务升级等,同时包含了三种主要信任级别:AllowPartiallyTrustedCallers(APTCA)信任级别、Distributed Transaction Permission(DTP)信任级别和完全信任级别。

四、使用SqlTransaction实现数据库操作事务

  要使用事务处理应在程序头部引用System.Transactions命名空间。
  SqlTransaction类是对SQL Server数据库进行事务处理的类,该类的实例由SqlConnection类实例的BeginTransaction方法创建,表示在该数据库连接实例上开始一个数据库事务,创建SqlTransaction类实例后,在程序中使用该实例的Commit方法提交事务,或者使用该类的Rollback方法回滚事务。

五、多数据库连接事务操作实例

  在事务范围内应调用且仅仅调用一次Complete方法,当事务范围的Complete方法调用时,事务范围中的数据操作尝试提交,提交失败时自动回滚,如果在事务范围内未执行Complete方法,则导致事务范围在操作未提交的情况下结束。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Transactions;
    using System.Data;
    using System.Data.SqlClient;
    namespace MultiDatabaseTransactionScope
    {
        class Program
        {
            static void Main(string[] args)
            {
              //在创建的事务范围实例内运行代码
                using (TransactionScope ts = new TransactionScope())
                {
                    //连接数据库1的字符串
                    string ConnectionString1 = @"Data Source = localhost; Initial Catalog = Northwind; Integrated Security = SSPI;";
                    //创建数据库1连接类实例1
                    SqlConnection conn1 = new  SqlConnection(ConnectionString1);
                    //创建数据库1命令类实例1
                    SqlCommand command1 = new SqlCommand(@"INSERT Shippers(CompanyName,Phone)   VALUES('Test Ship2','0000-0002')", conn1);
                    conn1.Open();//连接数据库1
                    command1.ExecuteNonQuery();//在数据库1上执行命令
                    Console.WriteLine("数据库1的命令已执行");
                    conn1.Close();//关闭数据库1
                    //连接数据库2的字符串
                    string ConnectionString2 = @"Data Source = localhost; Initial Catalog =pubs; Integrated Security = SSPI;";
                    //创建数据库2连接类实例2
                    SqlConnection conn2 = new SqlConnection(ConnectionString2);
                    //创建数据库2命令类实例2
                    SqlCommand command2 = new SqlCommand(@"INSERT Discounts(Discounttype,Discount) VALUES('Other',12)", conn2);
                    conn2.Open();//连接数据库2
                    command2.ExecuteNonQuery();//在数据库2上执行命令
                    Console.WriteLine("数据库2的命令已执行");
                    conn2.Close();//关闭数据库2
                    Console.Write("是否提交事务?(Y/N)");
                    if (Console.ReadKey(false).Key == ConsoleKey.Y)
                    {
                        ts.Complete();//提交事务
                        Console.WriteLine("");
                        Console.WriteLine("事务提交完成");
                    }
                    else
                    {
                        Console.WriteLine("取消事务提交");
                    }
                }
            }
        }
    }
```

相关文章

  • C#事务处理SqlTransaction

    《Visual C# 2008开发技术实例详解》读书笔记作者:李继攀等出版社:电子工业出版社出版时间:2008-0...

  • spring aop

    1、Spring中事务处理的作用: Spring事务处理,是将事务处理的工作统一起来,并为事务处理提供通用的支持。...

  • 关于 tp5 事务操作总结

    前提: 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用...

  • MySql___(7) MySQL 必知必会

    第26章 管理事务处理 26.1 事务处理 并非所有引擎都支持事务处理正如第21章所述,MySQL支持几种基本...

  • tp6进行事务操作

    使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 Inn...

  • OLAP和OLTP

    联机事务处理(OLTP)(on-line transaction processing)主要执行基本日常的事务处理...

  • SpringBoot(4)

    四 今日目标 事务处理 概念介绍 什么是事务处理? 事务处理就是要保持数据库的安全性。 事务要么完全地执行,要么完...

  • SQL学习十七、事务处理

    事务处理 使用事务处理(transaction processing),通过确保成批的 SQL 操作要么 完全执行...

  • OLTP和OLAP,联机事务处理和联机分析处理

    联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理...

  • JAVA利用JDBC对数据库的操作和JDBC编程之事务处理

    JDBC事务处理:

网友评论

      本文标题:C#事务处理SqlTransaction

      本文链接:https://www.haomeiwen.com/subject/zcejjltx.html