日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ado.net mysql 事务_ADO.NET事务

發布時間:2024/9/27 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ado.net mysql 事务_ADO.NET事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在發布System.Transaction命名空間之前,可以直接用ADO.NET創建事務,也可以通過組件、特性和COM+運行庫(位于System.EnterpriseServices命名空間中)進行事務處理。本文如題所示,介紹在這些傳統事務處理方式中較為簡單的“ASP.NET事務”。

在傳統的ADO.NET事務中,如果沒有手動創建事務,每條SQL語句就都是一個事務。如果多條SQL語句應參與到同一個事務處理中,就必須手動創建一個事務。

下面通過一個示例演示:

在MySql中建立如下表:

插入數據如下:

ADO.NET事務測試代碼:

using(MySqlConnection conn = new MySqlConnection(GetConnection()))

{

conn.Open();

//啟動一個事務

using(MySqlTransaction transaction = conn.BeginTransaction())

{

using (MySqlCommand cmd = conn.CreateCommand())

{

try

{

cmd.Transaction = transaction; //為命令指定事務

cmd.CommandText = "INSERT INTO tb_user(UserId,UserName) VALUE('Id0009','Name0002');";

cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO tb_user(UserId,UserName) VALUE('Id0008','Name0003');";

cmd.ExecuteNonQuery();

transaction.Commit(); //事務提交

Response.Write("");

}

catch(Exception ex)

{

transaction.Rollback(); //事務回滾

Response.Write(ex.Message);

Response.Write("");

}

}

}

}

代碼分析:

如示例代碼手動創建ADO.NET事務步驟如下:

1)使用MySqlConnection類的BeginTransaction()方法返回一個MySqlTransaction類型的對象;

2)使用MySqlCommand類對象的Transaction屬性將要參與事務處理的每條命令關聯到上一不返回的MySqlTransaction類型的對象上;

3)如果事務可以成功完成,使用MySqlTransaction對象的Commit()方法提交事務處理結果;

4)如果事務處理中發生錯誤,就調用MySqlTransaction對象的Rollback()方法,撤銷每一個修改。

ADO.NET事務的缺點;

ADO.NET事務只能處理關聯到一個連接上的本地事務,不支持跨多個連接的事務。(為了克服這一缺點,下一節將介紹基于System.Transaction命名空間的分布式事務)。

總結

以上是生活随笔為你收集整理的ado.net mysql 事务_ADO.NET事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。