ASP中的事务处理
这个项目使用ASP,其中一个页面要同时更新两个数据库的表,翻了翻MSDN之后,了解到使用@Transaction可以控制页面的事务,再使用ObjectContext.SetAbort或ObjectContext.SetComplete方法就可以了。基于Component Service的事务处理就是这么简单!
下面是我写的代码测试:
下面是我写的代码测试:
1
<% @Transaction = Required %>
2
<% Option Explicit %>
3
<%
4![](/Images/OutliningIndicators/None.gif)
5
Dim con1, con2
6
Dim rs1, rs2
7![](/Images/OutliningIndicators/None.gif)
8
On Error Resume Next
9
Randomize
10![](/Images/OutliningIndicators/None.gif)
11
' Open Connection
12
Set con1 = Server.CreateObject("ADODB.Connection")
13
Set con2 = Server.CreateObject("ADODB.Connection")
14![](/Images/OutliningIndicators/None.gif)
15
con1.Open "provider=sqloledb.1; data source=192.168.107.102; user id=sa; password=123456; initial catalog=northwind"
16
con2.Open "provider=sqloledb.1; data source=192.168.107.97; user id=sa; password=sa; initial catalog=northwind"
17![](/Images/OutliningIndicators/None.gif)
18
' Open Recordset
19
Set rs1 = Server.CreateObject("ADODB.Recordset")
20
Set rs2 = Server.CreateObject("ADODB.Recordset")
21![](/Images/OutliningIndicators/None.gif)
22
rs1.Open "SELECT * FROM T_ADO1", con1, 1, 3
23
rs2.Open "SELECT * FROM T_ADO2", con2, 1, 3
24![](/Images/OutliningIndicators/None.gif)
25
' AddNew Record
26
rs1.AddNew
27
rs1("num") = Rnd() * 100
28
rs1.Update
29![](/Images/OutliningIndicators/None.gif)
30
rs2.AddNew
31
rs2("num") = Rnd() * 100
32
rs2.Update
33![](/Images/OutliningIndicators/None.gif)
34
' Raise Error Or Not
35
If Request.QueryString("error") = 1 Then
36
tempNumber = CInt("abc")
37
End If
38![](/Images/OutliningIndicators/None.gif)
39
' If Error Occured, Rollback Transaction
40
If Err.Number <> 0 Then
41
ObjectContext.SetAbort
42
Response.Write Err.Number & "<br>" & Err.Description
43
Else
44
Response.Write "OK"
45
End If
46![](/Images/OutliningIndicators/None.gif)
47
' Close Recordset
48
If Not (rs1 Is Nothing) Then
49
rs1.Close
50
End If
51
If Not (rs2 Is Nothing) Then
52
rs2.Close
53
End If
54![](/Images/OutliningIndicators/None.gif)
55
Set rs1 = Nothing
56
Set rs2 = Nothing
57![](/Images/OutliningIndicators/None.gif)
58![](/Images/OutliningIndicators/None.gif)
59
' Close Connection
60
If Not (con1 Is Nothing) Then
61
con1.Close
62
End If
63
If Not (con2 Is Nothing) Then
64
con2.Close
65
End If
66![](/Images/OutliningIndicators/None.gif)
67
Set con1 = Nothing
68
Set con2 = Nothing
69![](/Images/OutliningIndicators/None.gif)
70
%>
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)