ADO.NET 事务控制

  1. 在ADO.NET 中,可以使用Connection 和Transaction 对象来控制事务。若要执行事务,请执行下列操作:   
  2.   
  3. 1.调用Connection 对象的BeginTransaction 方法来标记事务的开始。   
  4.   
  5. 2.将Transaction 对象分配给要执行的Command的Transaction 属性。   
  6.   
  7. 3.执行所需的命令。   
  8.   
  9. 4.调用Transaction 对象的Commit 方法来完成事务,或调用Rollback 方法来取消事务。 当然ADO.NET事务处理有优点和缺点,运用起来看具体情况了。   
  10.   
  11. 优点: – 简单性 – 和数据据事务差不多的快 – 独立于数据库,不同数据库的专有代码被隐藏了   
  12.   
  13. 缺点: – 事务不能跨越多个数据库连接 – 事务执行在数据库连接层上,所以需要在事务过程中维护一个数据库连接。   
  14.   
  15. 下边我们看一个例子,建立一个页面,同样简单,只需要一个按钮,然后编程:   
  16.   
  17. using System;   
  18.   
  19. using System.Data;   
  20.   
  21. using System.Configuration;   
  22.   
  23. using System.Collections;   
  24.   
  25. using System.Web;   
  26.   
  27. using System.Web.Security;   
  28.   
  29. using System.Web.UI;  
  30.   
  31.  8 using System.Web.UI.WebControls;   
  32.   
  33. using System.Web.UI.WebControls.WebParts;   
  34.   
  35. 10 using System.Web.UI.HtmlControls;   
  36.   
  37. 11 using System.Data.SqlClient;   
  38.   
  39. 12  
  40.   
  41.  13 namespace WebApplication1   
  42.   
  43. 14 {   
  44.   
  45. 15 public partial class AdoAction : System.Web.UI.Page   
  46.   
  47. 16 {   
  48.   
  49. 17 protected void Page_Load( object sender, EventArgs e)   
  50.   
  51. 18 {   
  52.   
  53. 19   
  54.   
  55. 20 }   
  56.   
  57. 21   
  58.   
  59. 22 protected void btn_Click( object sender, EventArgs e)   
  60.   
  61. 23 {   
  62.   
  63. 24 SqlConnection con = new SqlConnection();   
  64.   
  65. 25 con.ConnectionString = ConfigurationManager.ConnectionStrings[ " DSN " ].ConnectionString;   
  66.   
  67. 26 con.Open();   
  68.   
  69. 27 // 启动一个事务。   
  70.   
  71. 28 SqlTransaction myTran = con.BeginTransaction();   
  72.   
  73. 29 // 为事务创建一个命令,注意我们执行双条命令,第一次执行当然成功。我们再执行一次,失败。   
  74.   
  75. 30 // 第三次我们改其中一个命令,另一个不改,这时候事务会报错,这就是事务机制。   
  76.   
  77. 31 SqlCommand myCom = new SqlCommand();   
  78.   
  79. 32 myCom.Connection = con;   
  80.   
  81. 33 myCom.Transaction = myTran;   
  82.   
  83. 34 try   
  84.   
  85. 35 {   
  86.   
  87. 36 myCom.CommandText = " insert into SqlAction values ('测试2','111') " ;   
  88.   
  89. 37 myCom.ExecuteNonQuery();   
  90.   
  91. 38 myCom.CommandText = " insert into SqlAction values ('测试3','111') " ;   
  92.   
  93. 39 myCom.ExecuteNonQuery();   
  94.   
  95. 40 myTran.Commit();   
  96.   
  97. 41 Response.Write( " 成功执行 " );   
  98.   
  99. 42   
  100.   
  101. 43 }   
  102.   
  103. 44 catch (Exception Ex)   
  104.   
  105. 45 {   
  106.   
  107. 46 myTran.Rollback();  
  108.   
  109. 47 // 创建并且返回异常的错误信息   
  110.   
  111. 48 Response.Write(Ex.ToString());   
  112.   
  113. 49 Response.Write( " 写入数据库失败 " );   
  114.   
  115. 50 }  
  116.   
  117. 51 finally  
  118.   
  119. 52 {   
  120.   
  121. 53 con.Close();  
  122.   
  123. 54 }   

转载于:https://www.cnblogs.com/qi123/p/9217325.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sublime text 快捷键的使用大全

多行选择后按下ctrl/ 选择类 CtrlD 选中光标所占的文本,继续操作则会选中下一个相同的文本。 AltF3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名、函数名等。 CtrlL 选中整行&am…

amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)

Mysql 实现读写分离的详细教程(amoeba)发布时间:2018-08-17作者:laosun阅读(2220)继上篇文章,mysql实现主从配置之后的读写分离实现方式,文章地址。amoeba是盛大架构师陈思儒独立完成,除此之外还有很多中间件&#xff…

z-index的学习整理转述

前言:这是笔者第一次写博客,主要是学习之后自己的理解。如果有错误或者疑问的地方,请大家指正,我会持续更新! z-index属性描述元素的堆叠顺序(层级),意思是A元素可以覆盖B元素&…

十道海量数据处理面试题与十个方法大总结

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G64320G,远远大于内存限制的4G。所以不可能将其完全加载…

Spring集成文件轮询和测试

我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流。 Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该适配器可以扫描文件夹中的新文件,然后通…

Spark参数配置总结

转载于:https://www.cnblogs.com/lz3018/p/8128017.html

eclipse mysql生成实体类_Eclipse实现数据库反向生成实体类(pojo)-------(插件安装和实现步骤的说明)...

一、插件安装1.下载插件:http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip2.解压压缩包分别将其中的features和plugins放到Eclipse安装目录下对应的这2个文件里,重启Eclipse使其生效3.随便建个project&…

一些小技巧-重构

用box-shadow制造浮雕效果用box-shadow做简单的背景修饰长页面背景图不够用...... 01 用box-shadow制造浮雕效果 demo示例: src"http://demo.zhangruojun.com/static/demo/demo001/" frameborder"0" width"414" height"650&qu…

VM虚拟机显示不能铺满问题

关于使用虚拟机(VMware)时桌面显示不能铺满整个窗口时的设置操作: 步骤:虚拟机菜单下的:编辑-->首选项-->显示(如下图) 可以根据自己需求设置全屏下面的三个选项,确定后如果不…

Spring Data MongoDB中的审核实体

Spring Data MongoDB 1.2.0静默引入了新功能:支持基本审核 。 因为您不会在本文的官方参考中找到太多有关它的信息,所以我将展示它带来的好处,如何配置Spring以进行审计以及如何对文档进行注释以使其可审计。 审核使您可以声明性地告诉Spring…

Weex系列-项目工程

转载于:https://www.cnblogs.com/hacjy/p/8136460.html

MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比

今天在我的虚拟机中布置了环境,测试抓图如下:抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致相同,而且如果在一个列上同时建唯一索引和普通索引的话,mysql会自动选择唯一索引。谷歌一…

css中的三种基本定位机制

css中的三种基本定位机制 a.普通文档流 b.定位:相对定位 绝对定位 固定定位 c.浮动 1.普通流中,元素位置由文档顺序和元素性质决定,块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin值计算得到,行内元素在…

Mac再建管理员帐户

在Mac上添加用户没有成功, 把原来的管理员的用户群组修改后, 账户类型成为普通用户. 百度如何重新添加管理员: Mac上修改用户名后,无法用管理员账号和密码登录. 按照超过方法下去, 出现问题: 1, Command S之后, 命令行谈话一线转到登录. 重复几次后居然登录后进入命…

spring以及json,fastjson和jackson

(一) RestController 以及 RequestBody spring的这两个注解都需要使用对应的 message-converters 实现 pojo到字符串的转换, 需要配置实现了 GenericHttpMessageConverter 接口的实现类GenericHttpMessageConverter 父接口为HttpMessageConve…

JPA 2 | 动态查询与命名查询

JPA有自己的查询语言,称为JPQL。 JPQL与SQL非常相似,主要区别在于JPQL与应用程序中定义的实体一起使用,而SQL与数据库中定义的表和列名称一起使用。 在定义将对定义的Entity类执行CRUD操作的JPA查询时,JPA为我们提供了多种选择。 …

turtle 函数 方法_学python第十一节:turtle深入 了解

学python第十一节:深入分析turtleTurtle是一个直观有趣的图形绘制函数。这节课对turtle的以下几点进行补充:在蟒蛇绘制代码中提到过import 库引用保留字的函数,是补充python程序功能的方式,使用2种编写格式: 第一种引用…

intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法

【实习第三周,被生活逼成了全栈hhhh从开发写到测试】 报错如下: 经过查找各类资料博客,针对不同的情况有不同的解决办法:1. java源代码是用jdk1.6下开发的,后来环境上替换安装了jdk1.7编译运行。运行报错。我的错误不属…

ArrayList使用内存映射文件

介绍 内存中的计算由于负担得起的硬件而开始兴起,大多数数据保留在RAM中以满足延迟和吞吐量的目标,但是将数据保留在RAM中会增加垃圾收集器的开销,尤其是在您不预先分配的情况下。 因此,有效地我们需要一种无垃圾/无垃圾的方法来避…

JVM的内存区域划分(转载)

原文链接: http://www.cnblogs.com/dolphin0520/p/3613043.html JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如…