zoukankan      html  css  js  c++  java
  • 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 }   
  • 相关阅读:
    CodeForces 604D 【离散数学 置换群】
    CodeForces 604C 【思维水题】`
    CodeForces 602E【概率DP】【树状数组优化】
    CodeForces 602D 【单调队列】【简单数学】
    HDU 3535 【背包】
    CodeForces 593D【树链剖分】
    HYSBZ 1036 【树链剖分】
    POJ 2352 【树状数组】
    POJ 2182【树状数组】
    机器学习实战笔记-2-7分类机器学习形象化总结
  • 原文地址:https://www.cnblogs.com/qi123/p/9217325.html
Copyright © 2011-2022 走看看