`

C#中跨数据库增删改的事务控制

    博客分类:
  • C#
 
阅读更多

在程序的开发过程中,对数据库的增删改通常要用到事务,用来实现的全部更新和全部回滚。单数据库还比较好做,如果遇到同时操作多个数据库增删改,可以用下面的方法

 一。TransactionScope

     TransactionScope类是framework2.0 新增的一个类,在System.Transactions命名空间中,使用时必须先添加System.Transactions引用;另外还要在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动,启动这个服务.示例代码如下:

 try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    //更新northwind数据库的Employees表
                    using (SqlConnection conOne = new SqlConnection("server=.;uid=sa;pwd=123;database=northwind"))
                    {
                        conOne.Open();

                        SqlCommand command = new SqlCommand("update Employees set lastname='chen' where employeeid='1'", conOne);
                        int i = command.ExecuteNonQuery();
                    }

                    //更新pubs数据库的jobs表
                    using (SqlConnection conTwo = new SqlConnection("server=.;uid=sa;pwd=123;database=pubs"))
                    {
                        conTwo.Open();
                        SqlCommand command = new SqlCommand("update jobs set job_desc='chen' where job_id='1'", conTwo);
                        int i = command.ExecuteNonQuery();
                    }

                    scope.Complete();  //提交事物
                }
            }
            catch (Exception ex)       //发生异常后自动回滚
            {

                //throw;
            }

 二。另一种方法就是建立两个事务,两个连接了。代码如下;

SqlConnection conNorthwind = new SqlConnection("server=.;uid=sa;pwd=123;database=northwind");
            SqlConnection conPubs = new SqlConnection("server=.;uid=sa;pwd=123;database=pubs");

            SqlCommand commandNorthwind = new SqlCommand();
            SqlCommand commandPubs = new SqlCommand();
            try
            {
                conNorthwind.Open();
                conPubs.Open();

                //更新northwind数据库的Employees表
                SqlTransaction tranNorthwind = conNorthwind.BeginTransaction();
                commandNorthwind.Connection = conNorthwind;
                commandNorthwind.Transaction = tranNorthwind;
                commandNorthwind.CommandText = "update Employees set lastname='chen' where employeeid='1'";
                int i = commandNorthwind.ExecuteNonQuery();

                //更新pubs数据库的jobs表
                SqlTransaction tranPubs = conPubs.BeginTransaction();
                commandPubs.Connection = conPubs;
                commandPubs.Transaction = tranPubs;
                commandPubs.CommandText = "update jobs set job_desc='chen' where job_id='1'";
                int k = commandPubs.ExecuteNonQuery();

                //throw new Exception();

                //提交事务
                commandNorthwind.Transaction.Commit();
                conNorthwind.Close();

                commandPubs.Transaction.Commit();
                conPubs.Close();
            }
            catch (Exception ex)
            {

                //回滚事务
                if (commandNorthwind.Transaction != null && conNorthwind != null)
                {
                    commandNorthwind.Transaction.Rollback();
                    conNorthwind.Close();
                }

                if (commandPubs.Transaction!= null && conPubs != null)
                {
                    commandPubs.Transaction.Rollback();
                    conPubs.Close();
                }
                //throw;
            }

 

分享到:
评论

相关推荐

    c#实现数据库增删改插

    综上所述,"C#实现数据库增删改查"涉及到数据库连接、SQL命令的执行、事务管理、异步操作等多个方面,是ASP.NET Web应用开发中的基础技能。通过学习和实践,开发者能够有效地管理数据库中的数据,构建出功能丰富的...

    GridControl增删改查到数据库

    "GridControl增删改查到数据库"这个主题聚焦于如何利用UI组件GridControl与LINQ to SQL技术来实现对数据库数据的CRUD(Create, Read, Update, Delete)操作。下面将详细解释相关知识点。 首先,GridControl是一种...

    C# access数据库删改增实例

    在这个"C# access数据库删改增实例"中,我们将探讨如何利用C#来实现对Access数据库的CRUD(创建、读取、更新和删除)操作,这对于任何想要学习数据库管理的初学者来说都是非常基础且重要的。 首先,我们需要引入...

    WPF链接数据库进行增删改查操作_c# wpf sql数据库操作,wpf sql 增删改查

    本教程将向初级开发者介绍如何在WPF应用中执行基本的数据库操作,包括增、删、改、查(CRUD)操作。我们将使用C#语言以及SQL Server数据库。 首先,你需要安装SQL Server Express或LocalDB作为数据库服务器,并创建...

    C#窗体程序对数据库的增删改查操作(三层架构).

    窗体程序(Winform)是C#中构建桌面应用的主要方式,而数据库的增删改查(CRUD,Create, Read, Update, Delete)是任何数据驱动应用的核心功能。三层架构(N-Tier Architecture)是一种常见的软件设计模式,它将应用...

    C#操作微软Assess数据库,包括增删改查询

    在本主题中,我们将深入探讨如何利用C#进行Assess数据库的增删改查操作。 首先,让我们了解Access数据库。Access是由微软开发的关系型数据库管理系统,它支持JET引擎,允许开发者创建和管理数据存储。在C#中操作...

    C#开发基于FreeSql多库分布式事务、跨库查询、跨库分页查询、跨库增删改等功能实现源码+项目说明+sln.zip

    C#开发基于FreeSql多库分布式事务、跨库查询、跨库分页查询、跨库增删改等功能实现源码+项目说明+sln.zip **前言** 话说2021年开始了一个基于ASP.NET Core 微服务的项目,谈到微服务 多库环境下 分布式事务、分库...

    c#对数据库的基本操作(增删改)

    在C#编程中,数据库...理解并掌握以上内容,你就能基本实现C#对SQL数据库的增删改操作。实际应用中,还需要考虑错误处理、事务管理以及更复杂的查询。继续深入学习,你将能够构建更复杂、功能丰富的数据库应用程序。

    C#连接oracle数据库执行简单的增删改查操作

    在.NET编程环境中,C#与Oracle数据库的交互是常见的任务,尤其在开发企业级应用程序时。本示例详细介绍了如何使用C#连接Oracle数据库并执行基本的增、删、改、查(CRUD)操作。这里我们将深入探讨相关知识点。 首先...

    cSharp-to-SQL.rar_C#to_c# 增删改_c#执行单条Sql_sql_sql连接c#登陆

    本教程将详细讲解如何使用C#连接到SQL数据库,实现数据的增删改操作,并展示如何执行单条SQL语句以及实现SQL连接的用户登录功能。 一、C#连接SQL数据库 C#中,我们可以使用ADO.NET框架来与SQL Server进行通信。...

    ADO.NET DbHelper实现数据库增删改查,支持事务

    DbHelper C#实现的dbhelper类,支持mysql、sqlserver、oracle等多种数据库、支持事务

    C#Winform 增删改查 SqlServer(附数据库)

    在本文中,我们将深入探讨如何使用C# Winform与Sql Server数据库进行交互,实现增删改查功能。这个系统特别适合初学者学习,通过Visual Studio 2017开发环境,我们可以构建一个用户友好的图形界面,以方便地管理学生...

    ACCP6.0 S1 C#语言 和 数据库技术基础 第10章(共17章)

    数据库技术方面,通常会讲解SQL语言的基础,如SELECT语句用于查询数据,INSERT、UPDATE和DELETE用于数据的增删改,以及如何创建和管理数据库表。此外,还可能涉及数据库连接、事务处理、存储过程和触发器等进阶主题...

    工厂模式三层架构增删改查分页(BLL层使用事务)源码

    本软件是一个工厂模式三层架构例子程序(★特点与难点是在BLL层使用数据库事务,而不在DAL层使用数据库事务)。程序通过WinForm应用程序实现Sql Server 2005,Sqlite 3的增、删、改、查,分页功能。是学习三层架构、...

    Linq增删改查源文件带数据库

    1. **事务处理**:对于多步骤的操作,可能需要在数据库事务中进行,以确保数据的一致性。 2. **错误处理**:捕获并处理可能出现的异常,如SQL执行错误、连接问题等。 3. **性能优化**:合理使用分页查询、缓存策略...

    C#对ACCESS数据库的增删改查(三层)

    对于增删改操作,只需在数据访问层的方法中添加相应的SQL语句,如`INSERT`, `UPDATE`, 或 `DELETE`,并确保在事务中执行这些操作以保证数据一致性。 总结来说,C#对ACCESS数据库的增删改查操作可以通过ADO.NET组件...

    基于C#的简易数据库管理

    本项目专注于使用C#编程语言构建一个简易的数据库管理系统,实现了对SQL Server数据库的基本操作,包括增(添加)、删(删除)、查(查询)和改(修改)功能。下面我们将详细探讨这些知识点。 首先,C#是一种面向...

    WPF基于Stylet框架的sqlite增删改成程序

    总的来说,这个项目是一个使用WPF和Stylet实现的SQLite数据库管理应用,展现了如何在C#环境中运用MVVM模式来高效地进行UI设计和数据库操作。开发者通过学习这个项目,可以深入了解WPF应用的开发流程,以及SQLite...

    c# 事务即同时实现两个修改

    1. 原子性(Atomicity):事务中的所有操作被视为一个不可分割的整体,要么全部完成,要么全部不完成。如果在执行过程中出现错误,事务会回滚到初始状态,就像它从未发生过一样。 2. 一致性(Consistency):事务...

    C#三层结构(增删改)

    - 增删改:在数据管理中,增加新的记录、删除现有记录和修改已有记录是非常常见的操作。例如,假设我们有一个用户列表,表现层提供添加、删除和编辑用户的功能。BLL处理这些请求,确保符合业务逻辑(比如不允许删除...

Global site tag (gtag.js) - Google Analytics