|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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端实现导出报表功能 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |