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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在web开发中的三个层次使用事务

發布時間:2024/9/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在web开发中的三个层次使用事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很多數據庫操作需要進行事務,Asp.net下面進行事務大致有3個層次:?
(1)存儲過程層次的事務?
(2)Ado.Net層次的事務?
(3)Asp.Net頁面層次的事務?
下面分別舉例:?
首先建立trantest表,字段id(int),test(char)?
為id設置主鍵(利用主鍵是不允許重復的特性進行事務測試)?
假設數據庫內存在記錄id=1,test='test'
(1)?
CREATE?PROCEDURE?Tran1?
as?
begin?tran?
set?xact_abort?on
Insert?Into?trantest?(id,test)values(1,'test')?
Insert?Into?trantest?(id,test)values(2,'test')?
commit?tran?
GO?
set xact_abort on? 表示遇到錯誤立即回滾
當然你也可以這么寫
CREATE PROCEDURE tran1
as
begin tran
insert into trantest(id,test)values(1,'test')
if(@@error<>0)
?rollback tran
else
?begin
??insert into trantest(id,test)values(2,'test')
??if(@@error<>0)
???rollback tran
??else
???commit tran
?end
GO
(2)?
SqlConnection?conn=new?SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);?
SqlCommand?cmd1=new?SqlCommand("Insert?Into?trantest?(id,test)values(1,'test')",conn);?
SqlCommand?cmd2=new?SqlCommand("Insert?Into?trantest?(id,test)values(1,'test')",conn);?
conn.Open();?
SqlTransaction?tran=conn.BeginTransaction();?
cmd1.Transaction=tran;?
cmd2.Transaction=tran;?
try?
{?
?cmd1.ExecuteNonQuery();?
?cmd2.ExecuteNonQuery();?
?tran.Commit();?
}?
catch(SqlException?except)?
{?
?tran.Rollback();?
?Response.Write(except.Message);?
}?
finally?
{?
?conn.Close();?
}?
(3)?
添加引用System.EnterpriseServices.dll?
using?System.EnterpriseServices;?
隨便建立一個按鈕,在按鈕中進行如下操作:
try?
{?
?work1();?
?work2();?
?ContextUtil.SetComplete();?
}?
catch(System.Exception?except)?
{?
?ContextUtil.SetAbort();?
?Response.Write(except.Message);?
}?
然后在頁面中添加2個操作,模擬一下在邏輯層調用不同類中的操作的情況?
private?void?work1()?
??{?
???SqlConnection?conn=new?SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);?
???SqlCommand?cmd1=new?SqlCommand("Insert?Into?trantest?(id,test)values(1,'test')",conn);?
???conn.Open();?
???cmd1.ExecuteNonQuery();?
???conn.Close();?
??}?
??private?void?work2()?
??{?
???SqlConnection?conn=new?SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);?
???SqlCommand?cmd2=new?SqlCommand("Insert?Into?trantest?(id,test)values(2,'test')",conn);?
???conn.Open();?
???cmd2.ExecuteNonQuery();?
???conn.Close();?
??}?
修改前臺頁面在<%Page后面添加 Transaction="Required" 即可

總結

以上是生活随笔為你收集整理的在web开发中的三个层次使用事务的全部內容,希望文章能夠幫你解決所遇到的問題。

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