ASP事務處理

2021-04-15 13:15:39 字數 2019 閱讀 9764

<%

'asp事務處理。

'測試資料庫為sql server,伺服器為本機,資料庫名為test,表名為a,兩個欄位id(int)主鍵標識,num(int)

set conn=server.createobject("adodb.connection")

strconn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;initial catalog=test;data source=."

conn.open strconn

'以上**建立資料庫連線

conn.begintrans '事務開始

strsql1="update a set num=1000 where id=24" '第乙個sql語句為update。(語法正確)

strsql2="insert into a(num) values('a')" '第二個sql語句為錯誤的sql語句

strsql3="insert into a(num) values(33333)" '第三個sql語句為正確的sql語句

call conn.execute(strsql1) 

call conn.execute(strsql2) 

call conn.execute(strsql3) 

if conn.errors.count=0 then 

conn.committrans  '如果沒有conn錯誤,則執行事務提交

else

conn.rollbacktrans '否則回滾

end if

%>

以上**經除錯,可以正常的進行事務處理。但是有時候,我們並不想將編譯錯誤顯示給使用者。

則我們需要在conn.begintrans後面加上on error resume next

但是因為用到了on error resume next。conn.errors.count只能獲得最後乙個資料庫操作的conn返回的結果 。上面的三個sql語句,因為最後乙個sql語句是正確的,則此事務處理就無效了。那我們需要對出錯處理作出相對應的修改。

if conn.errors.count=0 then應該改為if err.number=0 then

這樣,我們可以在資料庫回滾後同時做出其他相對應的操作或者提示。修改後的**如下:

<%

set conn=server.createobject("adodb.connection")

strconn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;initial catalog=test;data source=."

conn.open strconn

'以上**建立資料庫連線

conn.begintrans '事務開始

on error resume next '增加的**

strsql1="update a set num=1000 where id=24" '第乙個sql語句為update。(語法正確)

strsql2="insert into a(num) values('a')" '第二個sql語句為錯誤的sql語句

strsql3="insert into a(num) values(33333)" '第三個sql語句為正確的sql語句

call conn.execute(strsql1) 

call conn.execute(strsql2) 

call conn.execute(strsql3) 

if err.number =0 then 

conn.committrans  '如果沒有conn錯誤,則執行事務提交

else

conn.rollbacktrans '否則回滾

'回滾後的其他操作

strerr=err.description

response.write "資料庫錯誤!錯誤日誌:"&strerr &""

response.end

end if

asp事務處理

當大量的對資料庫進行插入,修改,刪除等操作時,如果要實現事務,可以用以下 如 transaction required on error resume next strsql1 insert into a num values 1 strsql2 insert into a num values a...

ASP事務處理

asp事務處理。測試資料庫為sql server,伺服器為本機,資料庫名為test,表名為a,兩個欄位id int 主鍵標識,num int set conn server.createobject adodb.connection strconn provider sqloledb.1 persi...

ASP事務處理經典文摘

在開發web應用時,無一例外地需要訪問資料庫,以完成對資料的查詢 插入 更新 刪除等操作。受應用邏輯的影響,有時需要將多條資料庫操作指令組成乙個工作單元 事務 在資料庫中,所謂事務是指一組邏輯操作單元,它使資料從一種狀態變換到另一種狀態。為確保資料庫中資料的一致性,應當用離散的成組的邏輯單元運算元據...