.NET中事務操作小結(1)
在進行資料庫操作的過程中,需要通過一種機制來保證資料的完整性,即稱為事務
基本的事務必須從屬4個特點ACID(Atomicity,Consistency,Isolation and Duiability),即原子性,一致性,獨立性,永續性,總體特點說明如下:
Atomicity(原子性):在一個操作中涉及兩個或兩個以上獨立的資訊,這些資訊要麼全部提交,要麼都不提交
Consistency(一致性):操作要麼建立新的有效的資料狀態,要麼(如果發生錯誤下)將所又的資料返回到初始狀態
Isolation(獨立性):操作在沒有提交併不與其他操作發生任何關係
Duiability(永續性):即使操作過程中發生了錯誤需要重新啟動,儲存的已經提交的資料在正確的狀態下任然有效
。NET事務主體主要分成兩種情況:手動事務和自動事務
。NET目前提供了三種事務機制:
(1)在SQL中使用事務
(2)在ADO.NET中使用事務
(3)分散式事務(Com+事務)—主要用於自動事務控制
--------------------------------------------------------------------------------
A:在SQL中使用事務
關鍵字:Begin Trans,Commit Trans,RollBack Trans實現,這種方式最為簡單
--在SQL中使用事務
begin Trans
declare @orderError int,@productError int
delete from OrderList where id=45
select @orderError=@@Error
delete from ProductList where id=44
select @productError=@@Error
if(@orderError==0 and @productError==0)
commit Trans
else
RollBack Trans
//在SQL使用最為簡單 不做過多介紹
B:在ADO.NET中使用事務:
在ADO.net中主要通過Transaction物件來實現事務的基本處理。
SqlConnection和OledbConnection物件有一個BeginTransaction方法,該方法返回一個SqlTransaction或者OleDBTransaction物件,而這兩個物件中Commit和RollBack方法來管理事務處理。很簡便明瞭
其中在ADO.net主要特點是:
優點是:
(A)操作簡單(主要是物件幾個方法)和資料庫事務差不多
(B)獨立於資料庫 不同資料庫專有程式碼被隱藏了
缺點是:
(A)事務不能跨多個資料庫連線(分散式事務可以跨多個資料庫)
(B)事務執行必須依靠一個存在的資料庫連線,從Transaction物件生成就可以看出通過SqlConnection或OleDBConnection物件獲得。
(C)ADO.net中分散式事務可以跨多個資料庫,如果其中一個是SQLServer資料庫的話,通過SQLserver連線伺服器連線別的資料庫,但如果是DB2和Oracle之間就不行。如下例項程式碼:
--在ADO.net中新增事務
--連線字串已知conStr
using(SqlConnenction getCon=new SqlConnection(conStr))
{
//open Connection
getCon.open();
//宣告一個SqlTransaction
SqlTransaction getTran=getCon.BeginTransaction();
SqlCommand getCmd=new SqlCommand();
getCmd.Connection=getCon;
//定義命令操作事務
getCmd.Transaction=getTran;
//通過一個Try-Catch
try
{
//執行第一條SQL語句
getCmd.CommandText="insert into OrderList('德國柏林')";
getCmd.ExecuteNonQuery();
//執行第二條SQL語句
getCmd.CommandText="delete from OrderList where id=1425";
getCmd.ExecuteNonQuery();
//若沒有異常提交事務
getTran.Commit();
}catch(Exception ce)
{
//出現異常 事務回滾
getTran.RollBack();
}finally
{
//關閉資料庫連線 使用了Using快就不需要了
// getCom.close();
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-566855/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- net中的4種事務總結
- Laravel 事務中 使用 悲觀鎖 小結Laravel
- Sring事務原理分享小結
- oracle事務知識點小結Oracle
- ThinkPHP5中的事務操作PHP
- Redis事務操作Redis
- MySQL 事務操作MySql
- 事務基本定義操作
- mongodb 的事務性操作MongoDB
- Go 語言操作 MySQL 之 事務操作GoMySql
- 資料庫事務與 MySQL 事務總結資料庫MySql
- 編輯 Java 中的事務 — JDBC 事務和 JTA 事務JavaJDBC
- jQuery操作iframe中js函式的方法小結jQueryJS函式
- 開發小組事務欄
- oracle事務transaction鎖lock一點兒小思考或總結Oracle
- TransactionScope事務處理方法介紹及.NETCore中的注意事項NetCore
- 小總結(1)
- 記在 Hyperf 中多庫連線操作事務注意事項
- MongoDB 中的事務MongoDB
- MyBatis中的事務MyBatis
- Redis 中的事務Redis
- oracle 中的事務Oracle
- MySql中的事務MySql
- mysql總結(二)-事務MySql
- 分散式事務總結分散式
- Oracle事務控制總結Oracle
- Redis日常操作命令小結Redis
- 一個事務插入,另外一個事務更新操作,是否會更新成功?
- 事務使用中如何避免誤用分散式事務分散式
- .net中xml基本操作XML
- Redis系列之key操作命令與Redis中的事務詳解(六)Redis
- .Net Core中依賴注入服務使用總結依賴注入
- Redis中的事務處理機制分析與總結Redis
- MySQL 事務常見面試題總結 | JavaGuide 稽核中MySql面試題JavaGUIIDE
- 1.HTML小結HTML
- asp.net中Page.ClientScript.RegisterStartupScript用法小結ASP.NETclient
- sqlserver遇到回滾事務的操作策略SQLServer
- SAP取消操作的事務碼-待完成