国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ADO.NET筆記——執行事務

2024-07-21 02:47:34
字體:
來源:轉載
供稿:網友
ADO.NET筆記——執行事務

相關知識:

  1. 處于同一事務(Transaction)內的一組操作,要么都成功執行,最后完全提交;但如果只要有任何一個操作失敗或者出問題,所有值錢執行的操作也都取消并恢復到初始狀態(即回滾)
  2. SqlTransacttion代表從ADO.NET中發出的事務

代碼示例:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Data; 7 using System.Data.SqlClient; 8  9 namespace Consoleapplication1310 {11     class PRogram12     {13         static string strConn = @"server=Joe-PC;database=AccountDBforSQLInjection;uid=sa;pwd=root";14         static SqlConnection conn = new SqlConnection(strConn);15 16         static string sql1 = "INSERT INTO Account(AccountID,AccountName,passWord) VALUES"17             + "(100,'sql1','123456')";//此命令正確18         static string sql2 = "INSERT INTO Account(AccountID,AccountName1,password) VALUES"19             + "(100,'sql2','123456')";//此命令因有拼寫錯誤將會失敗20 21         static SqlCommand cmd1 = new SqlCommand(sql1, conn);22         static SqlCommand cmd2 = new SqlCommand(sql2, conn);23 24         static void Main(string[] args)25         {26             //OperationWithoutTransaction();27             OperationWithTransaction();28         }29 30         static void OperationWithoutTransaction()31         {32             conn.Open();33 34             try35             {36                 cmd1.ExecuteNonQuery();37                 cmd2.ExecuteNonQuery();38             }39             catch (Exception e)40             {41                 Console.WriteLine("執行失敗。");42                 Console.WriteLine(e);43             }44             finally45             {46                 conn.Close();47             }48         }49 50         static void OperationWithTransaction()51         {52             conn.Open();53             //連接打開后,才能啟動事務54             SqlTransaction trans = conn.BeginTransaction();55             //將兩個操作添加到同一個事務中56             cmd1.Transaction = trans;57             cmd2.Transaction = trans;58 59             try60             {61                 cmd1.ExecuteNonQuery();62                 cmd2.ExecuteNonQuery();63                 //如果沒有出現異常,則提交事務64                 trans.Commit();65             }66             catch (Exception e)67             {68                 Console.WriteLine("執行失敗,事務回滾。");69                 Console.WriteLine(e);70                 //執行回滾71                 trans.Rollback();72             }73             finally74             {75                 conn.Close();76             }77         }78     }79 }

程序分析:

  1. 沒有使用事務時,如果命令1執行正確,而命令2執行錯誤,則命令1的修改將成功保存到數據庫中
  2. 使用事務之后,只要有任何一個命令錯誤,則另個命令都不會對數據庫造成影響


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏邑县| 平陆县| 石景山区| 子洲县| 邵阳市| 神农架林区| 延寿县| 金寨县| 贞丰县| 武山县| 武城县| 和静县| 灵山县| 新平| 阳曲县| 柳江县| 长乐市| 同仁县| 镇平县| 九龙县| 修文县| 侯马市| 清新县| 延寿县| 丰都县| 金寨县| 通江县| 镇原县| 汽车| 松原市| 余干县| 凤冈县| 西峡县| 平邑县| 荣成市| 吕梁市| 绥江县| 尤溪县| 会同县| 临夏市| 高雄市|