ADO如何提供异动功能?(BIG5)

小路儿_

小路儿_

2016-01-29 18:07

ADO如何提供异动功能?(BIG5),ADO如何提供异动功能?(BIG5)
  BeginTrans/CommitTrans/Rollback方法

當您必須更新多個資料表中的資料欄位時,並確保在所有的資料表中所作的改變都被完成(確認Commit)、或者不變(撤銷復原Rollback)時,您可以使用異動(transaction)來維護資料的完整性。

例如,當您將錢從甲帳戶匯到另一個乙帳戶時,需要從甲帳戶上減去一個數並加到另一個乙帳戶上。如果其中有一個更新失敗,帳戶就不會平衡。

使用異動(transaction)功能時,對資料所做的任何改變都可撤銷復原(Rollback),或者可以確認(Commit)儲存所有對資料庫的改變。

加上異動(transaction)功能的方法,為在更新第一筆資料欄位前,先使用BeginTrans 方法,然後,只要有任何更新失敗,就可以使用RollbackTrans方法撤銷所有的更新。當您成功地更新最後一筆資料欄位之後,就可使用CommitTrans方法確認(Commit)儲存到資料庫。

ADO有三種支援異動處理的方法:BeginTrans、CommitTrans、與Rollback。但是,資料庫本身也必須支援異動處理的功能,譬如SQL Server提供異動(transaction)處理的功能,但是Access則未提供。

BeginTrans:開始一個異動處理,一旦開始一個異動處理,就必須在關閉資料庫或應用程式之前使用CommitTrans或Rollback。當應用程式結束時,沒有交付確認(Commit)的異動要自動復原。
CommitTrans:將改變儲存到資料庫中。用BeginTrans方法開啟異動處理以後,CommitTrans方法將RecordSet所有的改變儲存到資料庫。執行CommitTrans時,所有改變成為永久性的改變。
Rollback:撤銷復原,倒退或者撤銷目前異動處理中所有已改變的資料。它同時終止異動處理。
異動(transaction)例子

讓我們看一個於ASP程式碼當中使用BeginTrans/ CommitTrans/RollbackTrans提供異動(transaction)功能的例子。

本例子,使用RecordSet 的Requery方法,重新執行SELECT指令載入資料到RecordSet。

執行本例子的資料庫必須支援異動處理的功能,譬如SQL Server提供異動(transaction)處理的功能,但是Access則未提供。

若要執行本例子,請先安裝「企業網站熱門應用精選」,以便自動於SQL Server建立comPak資料庫。

譬如ASP程式碼rs4.asp如下,使用BeginTrans方法開始一個異動處理,將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上100,再使用CommitTrans方法將RecordSet所有的改變儲存到資料庫。或者使用Rollback方法,撤銷目前異動處理中所有已改變的資料:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"

Set rs2 = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM 檔案下載"

rs2.Open sql,conn1,1,2,1

conn1.BeginTrans

Do while not rs2.EOF

if IsNull(rs2("檔案下載次數")) then rs2("檔案下載次數") = 100

rs2("檔案下載次數") = rs2("檔案下載次數") + 100

rs2.MoveNext

Loop

conn1.CommitTrans

'conn1.RollbackTrans

rs2.Requery

'rs2.Close

'Set rs2 = Server.CreateObject("ADODB.Recordset")

'sql = "SELECT * FROM 檔案下載"

'rs2.Open sql,conn1,1,2,1

%

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0

<TR

<TD ALIGN=CENTER BGCOLOR="#800000"<FONT COLOR="#FFFFFF"名稱</FONT</TD

<TD ALIGN=CENTER BGCOLOR="#800000"<FONT COLOR="#FFFFFF"檔案下載檔案</FONT</TD

<TD ALIGN=CENTER BGCOLOR="#800000"<FONT COLOR="#FFFFFF"檔案下載次數</FONT</TD

</TR

<% Do while not rs2.EOF %

<TR

<TD BGCOLOR="f7efde" ALIGN=CENTER<%= rs2("名稱")%</TD

<TD BGCOLOR="f7efde" ALIGN=CENTER<%= rs2("檔案下載檔案")%</TD

<TD BGCOLOR="f7efde" ALIGN=CENTER<%= rs2("檔案下載次數")%</TD

</TR

<%

rs2.MoveNext

Loop

%

以上的 ASP程式碼rs4.asp,於用戶端使用瀏覽器,瀏覽執行的結果,使用rs2.Requery方法重新執行SELECT指令載入資料到RecordSet,顯示異動處理後的記錄。

每執行一次,會將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上100。

UpdateBatch/CancelBatch (SQL Server)

您可
展开更多 50%)
分享

猜你喜欢

ADO如何提供异动功能?(BIG5)

ASP
ADO如何提供异动功能?(BIG5)

ADO如何使用Update语法呢?(BIG5)

ASP
ADO如何使用Update语法呢?(BIG5)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Foxmail如何阅读BIG5码邮件

电脑网络
Foxmail如何阅读BIG5码邮件

让TRichEdit支持BIG5内码

编程语言 网络编程
让TRichEdit支持BIG5内码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Foxmail怎么发送BIG5码邮件

电脑网络
Foxmail怎么发送BIG5码邮件

检查字符串strSource是否为big或big5码

ASP
检查字符串strSource是否为big或big5码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SP2升级了哪些Windows XP支持工具

SP2升级了哪些Windows XP支持工具

Photoshop初学者实例教程:混合选项抠出透明玻璃杯

Photoshop初学者实例教程:混合选项抠出透明玻璃杯
下拉加载更多内容 ↓