人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

如何在.NET中完成事務(wù)(1)

如何在.NET中完成事務(wù)(1)

更新時間:2022-06-07 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

如何在.NET中實現(xiàn)事務(wù)機制呢? 通常可以使用2種方式: 直接寫入到sql 中;使用ADO.NET 實現(xiàn)。下面依次作一下介紹:

方法1:直接寫入到sql 中



使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 實現(xiàn):

例如

BEGIN TRANS

DECLARE @orderDetailsError int, @productError int

DELETE FROM "Order Details" WHERE ProductID=42

SELECT @orderDetailsError = @@ERROR

DELETE FROM Products WHERE ProductID=42

SELECT @productError = @@ERROR

IF @orderDetailsError = 0 AND @productError = 0

COMMIT TRANS

ELSE

ROLLBACK TRANS

這種方法比較簡單,具體可以查閱相關(guān)sql server 幫助



方法2 :使用ADO.NET 實現(xiàn),使用這種方式的優(yōu)點是可以在中間層來管理事務(wù),當然你也可以選擇在數(shù)據(jù)層來實現(xiàn)。

SqlConnection 和OleDbConnection 對象有一個 BeginTransaction 方法,它可以返回 SqlTransaction 或者OleDbTransaction 對象。而且這個對象有 Commit 和 Rollback 方法來管理事務(wù),具體例子如下:

cnNorthwind.Open()



Dim trans As SqlTransaction = cnNorthwind.BeginTransaction()



Dim cmDel As New SqlCommand()

cmDel.Connection = cnNorthwind

cmDel.Transaction = trans



Try



cmDel.CommandText = _

"DELETE [Order Details] WHERE ProductID = 42"



cmDel.ExecuteNonQuery()



cmDel.CommandText = "DELETE Products WHERE ProductID = 42"



cmDel.ExecuteNonQuery()



trans.Commit()



Catch Xcp As Exception



trans.Rollback()



Finally



cnNorthwind.Close()



End Try

Ok,通過上面的例子可以實現(xiàn)與方法1同樣的效果。

并發(fā)問題:

如果沒有鎖定且多個用戶同時訪問一個數(shù)據(jù)庫,則當他們的事務(wù)同時使用相同的數(shù)據(jù)時可能會發(fā)生問題。并發(fā)問題包括: 丟失或覆蓋更新,未確認的相關(guān)性(臟讀),不一致的分析(非重復讀),幻像讀。但是如何來避免數(shù)據(jù)讀取時臟讀等問題出現(xiàn)呢?

您可以參考后面我寫的文章:如何在.NET中實現(xiàn)

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 灌阳县| 定西市| 广州市| 秀山| 吉安市| 西平县| 华容县| 明溪县| 福清市| 开原市| 利辛县| 镇坪县| 柘荣县| 长治市| 邵阳市| 桦南县| 资兴市| 白山市| 兖州市| 水城县| 乾安县| 泰宁县| 延吉市| 台州市| 修武县| 竹溪县| 嘉禾县| 崇左市| 洛阳市| 威海市| 大田县| 河间市| 晋州市| 怀来县| 怀柔区| 淅川县| 黔南| 甘德县| 济阳县| 普陀区| 双流县|