国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

在web開(kāi)發(fā)中的三個(gè)層次使用事務(wù)

2024-07-21 02:15:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
很多數(shù)據(jù)庫(kù)操作需要進(jìn)行事務(wù),asp.net下面進(jìn)行事務(wù)大致有3個(gè)層次: 
(1)存儲(chǔ)過(guò)程層次的事務(wù) 
(2)ado.net層次的事務(wù) 
(3)asp.net頁(yè)面層次的事務(wù) 
下面分別舉例: 
首先建立trantest表,字段id(int),test(char) 
為id設(shè)置主鍵(利用主鍵是不允許重復(fù)的特性進(jìn)行事務(wù)測(cè)試) 
假設(shè)數(shù)據(jù)庫(kù)內(nèi)存在記錄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  表示遇到錯(cuò)誤立即回滾
當(dāng)然你也可以這么寫(xiě)
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; 

隨便建立一個(gè)按鈕,在按鈕中進(jìn)行如下操作:
try 

 work1(); 
 work2(); 
 contextutil.setcomplete(); 

catch(system.exception except) 

 contextutil.setabort(); 
 response.write(except.message); 


然后在頁(yè)面中添加2個(gè)操作,模擬一下在邏輯層調(diào)用不同類(lèi)中的操作的情況 
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(); 
  } 

修改前臺(tái)頁(yè)面在<%page后面添加 transaction="required" 即可注冊(cè)會(huì)員,創(chuàng)建你的web開(kāi)發(fā)資料庫(kù),
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙泉市| 湄潭县| 英山县| 会昌县| 惠州市| 麻栗坡县| 乌拉特后旗| 古交市| 夏邑县| 磴口县| 浦城县| 禹城市| 武平县| 手游| 岗巴县| 宣汉县| 乌拉特后旗| 全南县| 红原县| 乐亭县| 恩施市| 密云县| 泰安市| 固原市| 临江市| 五莲县| 青州市| 咸阳市| 铜川市| 巫溪县| 吉隆县| 海阳市| 山阴县| 汽车| 巴楚县| 三门县| 凌海市| 安宁市| 榆林市| 天气| 安宁市|