这个项目使用ASP,其中一个页面要同时更新两个数据库的表,翻了翻MSDN之后,了解到使用@Transaction可以控制页面的事务,再使用ObjectContext.SetAbort或ObjectContext.SetComplete方法就可以了。基于Component Service的事务处理就是这么简单!

下面是我写的代码测试:
 1ASP中的事务处理<% @Transaction = Required %>
 2ASP中的事务处理<Option Explicit %>
 3ASP中的事务处理<%
 4
ASP中的事务处理
 5ASP中的事务处理Dim
 con1, con2
 6ASP中的事务处理Dim
 rs1, rs2
 7
ASP中的事务处理
 8ASP中的事务处理On Error Resume Next

 9ASP中的事务处理Randomize
10ASP中的事务处理
11ASP中的事务处理' Open Connection

12ASP中的事务处理Set con1 = Server.CreateObject("ADODB.Connection")
13ASP中的事务处理Set con2 = Server.CreateObject("ADODB.Connection"
)
14
ASP中的事务处理
15ASP中的事务处理con1.Open "provider=sqloledb.1; data source=192.168.107.102; user id=sa; password=123456; initial catalog=northwind"

16ASP中的事务处理con2.Open "provider=sqloledb.1; data source=192.168.107.97; user id=sa; password=sa; initial catalog=northwind"
17ASP中的事务处理
18ASP中的事务处理' Open Recordset

19ASP中的事务处理Set rs1 = Server.CreateObject("ADODB.Recordset")
20ASP中的事务处理Set rs2 = Server.CreateObject("ADODB.Recordset"
)
21
ASP中的事务处理
22ASP中的事务处理rs1.Open "SELECT * FROM T_ADO1", con1, 13

23ASP中的事务处理rs2.Open "SELECT * FROM T_ADO2", con2, 13
24ASP中的事务处理
25ASP中的事务处理' AddNew Record

26ASP中的事务处理rs1.AddNew
27ASP中的事务处理rs1("num"= Rnd() * 100

28ASP中的事务处理rs1.Update
29
ASP中的事务处理
30
ASP中的事务处理rs2.AddNew
31ASP中的事务处理rs2("num"= Rnd() * 100

32ASP中的事务处理rs2.Update
33
ASP中的事务处理
34ASP中的事务处理' Raise Error Or Not

35ASP中的事务处理If Request.QueryString("error"= 1 Then
36ASP中的事务处理    tempNumber = CInt("abc")
37ASP中的事务处理End If

38ASP中的事务处理
39ASP中的事务处理' If Error Occured, Rollback Transaction

40ASP中的事务处理If Err.Number <> 0 Then
41ASP中的事务处理    ObjectContext.SetAbort
42ASP中的事务处理    Response.Write Err.Number & "<br>" &
 Err.Description
43ASP中的事务处理Else

44ASP中的事务处理    Response.Write "OK"
45ASP中的事务处理End If
46ASP中的事务处理
47ASP中的事务处理' Close Recordset

48ASP中的事务处理If Not (rs1 Is NothingThen
49ASP中的事务处理    rs1.Close
50ASP中的事务处理End If

51ASP中的事务处理If Not (rs2 Is NothingThen
52ASP中的事务处理    rs2.Close
53ASP中的事务处理End If

54ASP中的事务处理
55ASP中的事务处理Set rs1 = Nothing

56ASP中的事务处理Set rs2 = Nothing
57ASP中的事务处理
58
ASP中的事务处理
59ASP中的事务处理' Close Connection

60ASP中的事务处理If Not (con1 Is NothingThen
61ASP中的事务处理    con1.Close
62ASP中的事务处理End If

63ASP中的事务处理If Not (con2 Is NothingThen
64ASP中的事务处理    con2.Close
65ASP中的事务处理End If

66ASP中的事务处理
67ASP中的事务处理Set con1 = Nothing

68ASP中的事务处理Set con2 = Nothing
69ASP中的事务处理
70ASP中的事务处理%>

相关文章: