1:事务是什么

  事务指的是一系列SQL操作的逻辑工作单元,,要么完全地执行,要么完全地不执行。

  一个逻辑工作单元必须有4个属性原子性(Atomic)一致性(Consistent)隔离型(Isolated)持久性(Durable),简称为ACID

2:在c#中怎么简单实现事务

在c#实现中实现数据库的事务其实并不难,但是我们要知道为什么使用数据库的事务,我们在实际业务场景中可能会遇到这样的一种情况:例如我们需要在一张数据库中插入两条数据,有的时候会出现第一条数据插入成功,但是第二条数据并未插入成功的情况,在这种业务情况下,我们不可能只保留第一条数据而忽略失败的第二条数据,因此,在这种情况下引入数据库的事务机制,就是为了让这组操作要么同时执行,要么同时不执行。

首先定义一个数据库连接并且打开,这里例子举的是SQL数据库,代码如下

  string conn = Config.sqlTransactionString;
SqlConnection myConnection = new SqlConnection(conn);
myConnection.Open();

接着通过数据库连接对象启动业务并为事务创建一个命令

 //启动一个事务
SqlTransaction myTrans = myConnection.BeginTransaction();
//为事务创建一个命令
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;

创建完事务之后,我们就开始执行相应的SQL数据库操作

    try
{
//插入两条ID相同的数据,必定会引发异常,以此来试验事务的用法
command.CommandText = "insert into student2(Id,Name) values (100,'数据99')";
command.ExecuteNonQuery();
command.CommandText = "insert into student2(Id,Name) values (100,'数据100')";
command.ExecuteNonQuery();
myTrans.Commit(); //事务提交
}
catch (Exception ex)
{
myTrans.Rollback(); //遇到错误,回滚
}

至此,一个简单的c#事务就已经完成了。

备注:数据库表:student2,只有两个字段:Id和Name

SQLServer事务在C#当中的应用的更多相关文章

  1. MySQL事务在MGR中的漫游记—路线图

    欢迎访问网易云社区,了解更多网易技术产品运营经验.   MGR即MySQL Group Replication,是MySQL官方推出的基于Paxos一致性协议的数据高可靠.服务高可用方案.MGR在20 ...

  2. Redis 事务在 SpringBoot 中的应用 (io.lettuce.core.RedisCommandExecutionException: ERR EXEC without MULTI)

    我们在 SpringBoot 中使用 Redis 时,会引入如下的 redis starter <dependency> <groupId>org.springframewor ...

  3. 转载事务在C#方法里的应用

    问题:一个系统的数据库更新或者插入的时候若遭遇到断电等能引起数据库不能正常工作的情况的话,其更新或插入的将是不完整的数据,或者是错误的数据.故需要引入事务处理. 实例:数据更新的事务处理. 解决方案: ...

  4. MyBatis和SpringMVC集成事务在Junit测试下有效但是在实际项目无效的问题

    一.问题说明 项目框架采用SSM,集成了事务回滚(方式见下),在单元测试的时候,测试事务是有效的,但是在实际项目上线的时候,却没有效果. 二.集成方式 application-mybatis.xml( ...

  5. MSSQL事务在C#程序端的使用

    拼接成一条SQL执行 优点:简单,容易看懂: 缺点:某些场合,涉及的业务较多,在同一SQL处理显得太冗长,复杂,不利于解耦. 使用细节 在方法之间传递参数,确保多个方法中的SQL都是使用同一个事务的( ...

  6. Mongodb 的事务在python中的操作

    代码实现如下: import pymongo mgClient = pymongo.MongoClient("ip", "port") session = mg ...

  7. spring事务在web环境中失效的问题

    今天温习一下spring事务的时候,出现了一种诡异的现象,在java环境中测试事务是可以的.然后到web下测试事务就没用了.spring.xml配置 spring-mvc.xml配置 后来百度发现是因 ...

  8. 事务的概念,以及事务在JDBC编程中处理事务的步骤

    事务是作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 .JDBC处理事务有如下操作: 1,con ...

  9. [网站性能3]SqlServer中Profiler的使用

    原文链接:http://www.cnblogs.com/caishuhua226/p/3838060.html   http://www.cnblogs.com/lyhabc/articles/294 ...

随机推荐

  1. 实验吧 ---- 隐写术之so beautiful so white

    因为好久没有写博客,所以今天本宝宝要弥补这个过错,一下子更新许多文章,希望各位小伙伴能够原谅,以后我会加倍努力的! 这一次主要都是实验吧里面的 关于隐写术方面的知识,后续我会上传一些解密工具,希望能够 ...

  2. Django-ORM增删改查

    ORM对单表进行增删改查 一,增加记录 #第一种方式 b=Book(name="Linux",price=66,author="kelvin",pub_date ...

  3. java 理解如何实现图片验证码 傻瓜都能看懂。

    先代码后解释: 只要把代码复制到你的项目中就可以了. 代码: 验证码工具类: package cn.happy.util.imagesVerTion; /** * Author: SamGroves ...

  4. link/Extended dependency 无法显示连接

    把矩形控件先去掉,然后就能看到表与表之间的 link/Extended dependency 连线了.

  5. Hibernate内容详解

    一:引入Hibernate的jar包 http://t.cn/EioD1xk 二:配置Hibernate的核心配置文件hibernate.cfg.xml <!DOCTYPE hibernate- ...

  6. 关于Python3.6中Twisted模块安装的问题

    今天准备学习爬虫的scrapy模块,在这之前需要安装许多别的模块,Twisted就是其一 一开始想着直接用pycharm来安装就行了,没想到安装了一会就报错了,如下 后来就换到命令提示符来安装,在官网 ...

  7. spring源码 — 四、MVC

    spring mvc是怎么实现的?为什么我们只需要在方法上写一个注解,就可以通过http访问这个接口?下面我们分3部分来解答这两个问题 注意:本文是基于spring4.3.2的 spring mvc整 ...

  8. Python猜数小游戏

    使用random变量随机生成一个1到100之间的数 采集用户所输入的数字,如果输入的不符合要求会让用户重新输入. 输入符合要求,游戏开始.如果数字大于随机数,输出数字太大:如果小于随机数,输出数字太小 ...

  9. 设计模式 | 模板方法模式(template method)

    定义: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 结构:(书中图,侵删) 一个定义整体框架的父类 若干不同具体实现 ...

  10. 给WEB初学者的一些有效率的建议

    因为IT互联网发展的非常迅速,而web前端这块很火,目前工资水平给的很高,在市场上也是非常的稀缺人才,现在各个行业转行做web前端的很多,今天给大家一些建议,希望新手少走点弯路吧! 建议一:有一个比较 ...