码迷,mamicode.com
首页 > Web开发 > 详细

ADO.NET 事务控制

时间:2018-06-23 17:12:27      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:ati   public   ted   对象   方法   编程   exce   控制   span   

  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 }   

ADO.NET 事务控制

标签:ati   public   ted   对象   方法   编程   exce   控制   span   

原文地址:https://www.cnblogs.com/qi123/p/9217325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!