快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

BeginTrans/CommitTrans/Rollback方式

??您必??更新多??儋料表中的儋料?谖??r,?K催保在所有的儋料表中所作的改??都被完成(催帐Commit)、或者不??(撤湮?驮?Rollback)?r,您可以使用???樱?transaction)?砭S罪儋料的完整性。

例如,??您?㈠X?募??????R到另一??乙?????r,需要?募????羯??p去一?????K加到另一??乙???羯稀H绻?其中有一??更新失?。????艟筒???平衡。

使用???樱?transaction)功能?r,??儋料所做的任何改??都可撤湮?驮?(Rollback),或者可以催帐(Commit)?Υ嫠?有??儋料?斓母淖?。

加上???樱?transaction)功能的方式,?樵诟?新第一剐儋料?谖磺埃?先使用BeginTrans 方式,然後,只要有任何更新失?。?就可以使用RollbackTrans方式撤湮所有的更新。??您成功地更新最後一剐儋料?谖恢?後,就可使用CommitTrans方式催帐(Commit)?Υ娴劫Y料?臁<br>
ADO有三肺增援???犹?理的方式:BeginTrans、CommitTrans、陪Rollback。但是,儋料?毂旧硪脖仨?增援???犹?理的功能,譬如SQL Server提供???樱?transaction)??理的功能,但是Access?t未提供。

BeginTrans:檫始一?????犹?理,一旦檫始一?????犹?理,就必??在晷檩儋料?旎???用程式之前使用CommitTrans或Rollback。????用程式劫束?r,?]有交付催帐(Commit)的???右?自???驮?。
CommitTrans:?⒏淖??Υ娴劫Y料?熘小S寐eginTrans方式檫?????犹?理以後,CommitTrans方式?⒁ecordSet所有的改???Υ娴劫Y料?臁??绦忻ommitTrans?r,所有改??成?橛谰眯缘母淖?。
Rollback:撤湮?驮?,倒退或者撤湮目前???犹?理中所有已改??的儋料。它同?r剿止???犹?理。
???樱?transaction)例子

??我??看一??於ASP程式瘁??中使用BeginTrans/ CommitTrans/RollbackTrans提供???樱?transaction)功能的例子。

本例子,使用RecordSet 的Requery方式,重新?绦杏ELECT指令蒌入儋料到RecordSet。

?绦斜纠?子的儋料?毂仨?增援???犹?理的功能,譬如SQL Server提供???樱?transaction)??理的功能,但是Access?t未提供。

若要?绦斜纠?子,??先安砚「企?I咀站?衢T??用精啉」,以便自?屿队QL Server建立comPak儋料?臁<br>
譬如ASP程式瘁rs4.asp如下,使用BeginTrans方式檫始一?????犹?理,?? [?n案下蒌] 儋料表每一剐????的 [?n案下蒌次?递 ?谖患由媳00,再使用CommitTrans方式?⒁ecordSet所有的改???Υ娴劫Y料?臁;蛘呤褂靡ollback方式,撤湮目前???犹?理中所有已改??的儋料:

<%

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 ?n案下蒌"

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

conn1.BeginTrans

Do while not rs2.EOF

if IsNull(rs2("?n案下蒌次?郸quot;)) then rs2("?n案下蒌次?郸quot;) = 100

rs2("?n案下蒌次?郸quot;) = rs2("?n案下蒌次?郸quot;) + 100

rs2.MoveNext

Loop

conn1.CommitTrans

\\\'conn1.RollbackTrans

rs2.Requery

\\\'rs2.Close

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

\\\'sql = "SELECT * FROM ?n案下蒌"

\\\'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">?n案下蒌?n案</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?n案下蒌次?郸lt;/FONT></TD>

</TR>

<% Do while not rs2.EOF %>

<TR>

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

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("?n案下蒌?n案")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("?n案下蒌次?郸quot;)%></TD>

</TR>

<%

rs2.MoveNext

Loop

%>

以上的 ASP程式瘁rs4.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,使用rs2.Requery方式重新?绦杏ELECT指令蒌入儋料到RecordSet,锢示???犹?理後的????。

每?绦幸淮危????? [?n案下蒌] 儋料表每一剐????的 [?n案下蒌次?递 ?谖患由媳00。

UpdateBatch/CancelBatch (SQL Server)

您可以使用UpdateBatch方式,?⒍喙P??更的????,批次??回到儋料?臁<br>
使用UpdateBatch方式?r,不必每一剐??更????都下一??Update方式,多剐????一起??更,最後再使用UpdateBatch方式,??回到儋料?臁;蚴鞘褂妹ancelBatch方式,放??所有的??更。

?绦斜纠?子的儋料?毂仨?增援UpdateBatch批次??更??理的功能,譬如SQL Server提供UpdateBatch的功能,但是Access?t未提供。

若要?绦斜纠?子,??先安砚「企?I咀站?衢T??用精啉」,以便自?屿队QL Server建立comPak儋料?臁<br>
譬如ASP程式瘁rs3.asp如下,?? [?n案下蒌] 儋料表每一剐????的 [?n案下蒌次?递 ?谖患由媳0,再使用UpdateBatch方式?⒁ecordSet所有的改???Υ娴劫Y料?臁;蛘呤褂妹ancelBatch方式,放??所有的??更:

<%

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

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

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

sql = "SELECT * FROM ?n案下蒌"

rs3.Open sql,conn1,1,4

Do while not rs3.EOF

if IsNull(rs3("?n案下蒌次?郸quot;)) then rs3("?n案下蒌次?郸quot;) = 10

rs3("?n案下蒌次?郸quot;) = rs3("?n案下蒌次?郸quot;) + 10

rs3.MoveNext

Loop

rs3.UpdateBatch

\\\'rs3.CancelBatch

rs3.Requery

%>

<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">?n案下蒌?n案</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?n案下蒌次?郸lt;/FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名费")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?n案下蒌?n案")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?n案下蒌次?郸quot;)%></TD>

</TR>

<%

rs3.MoveNext

Loop

%>

</TABLE>

<%

rs3.Close

conn1.Close

%>

以上的 ASP程式瘁rs3.asp,於用?舳耸褂??g盂器,?g盂?绦械慕Y果,锢示代??重覆的????。

其中rs3.Open sql,conn1,1,4的4表示?榕?次?酚^骈定(Batch Optimistic lock),使用UpdateBatch方式?⒍喙P??更的????批次??回到儋料???r,才骈定此批儋料????。

每?绦幸淮危????? [?n案下蒌] 儋料表每一剐????的 [?n案下蒌次?递 ?谖患由媳0。
返回类别: 教程
上一教程: 实例演练ASP+XML编程(1)
下一教程: 多图片上传到指定的目录并存到数据库

您可以阅读与"ADO如何提供异动功能(BIG5)"相关的教程:
· ADO如何建立修改?除资料表呢?(BIG5)
· ADO如何使用UPDATE语法呢(BIG5)
· ADO如何取得资料表栏位资讯(BIG5)
· ADO如何建立修改?除资料表呢(BIG5)
· 如何让WEB应用程序在CLIENT端实现导出报表功能
    微笑服务 优质保证 索取样品