国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 澳门| 图木舒克市| 昌乐县| 黄山市| 洪雅县| 曲松县| 罗平县| 郎溪县| 桂平市| 宽甸| 磐石市| 安宁市| 临泽县| 武平县| 常州市| 清镇市| 仙游县| 普兰县| 灌阳县| 浙江省| 威信县| 胶州市| 永安市| 武夷山市| 清镇市| 渭南市| 平度市| 汤阴县| 定安县| 桃江县| 平乐县| 徐汇区| 纳雍县| 泽库县| 阳东县| 海口市| 毕节市| 饶平县| 康定县| 梓潼县| 清镇市|