国产探花免费观看_亚洲丰满少妇自慰呻吟_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. 使用事務之后,只要有任何一個命令錯誤,則另個命令都不會對數據庫造成影響


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永嘉县| 昌吉市| 汝城县| 克什克腾旗| 紫金县| 博兴县| 墨竹工卡县| 察雅县| 巍山| 富阳市| 罗山县| 浙江省| 体育| 香河县| 繁峙县| 馆陶县| 新竹市| 什邡市| 鄱阳县| 阿鲁科尔沁旗| 吉安县| 峨边| 江西省| 广州市| 增城市| 马龙县| 准格尔旗| 重庆市| 平遥县| 汝州市| 泊头市| 苏尼特右旗| 崇明县| 镇江市| 浑源县| 南城县| 含山县| 当雄县| 喀喇沁旗| 丰县| 清徐县|