我們在使用ASP 內建的ADO元件進行資料庫編程時,通常是在腳本的開頭打開一個連接,並在腳本的最後關閉它,但是就較大腳本而言,在多數情況下連接打開的時間要比它需要打開的時間長得多。因此為了節省伺服器資源,應該盡可能關閉連接以釋放連接所佔有的資源,這種關閉記錄集的連接而不關閉記錄集的技術叫做斷開記錄集,這個記錄集本身則稱為斷開的記錄集。
下面我們就透過一個實例來說明這種技術的使用方法(NorthWind.mdb是Microsoft Access97自帶的一個資料庫,檔案adovbs.inc可在C:/Program Files/Common Files/System/ADO下找到):
複製代碼代碼如下:
<% @LANGUAGE = VBScript %>
<!--#include file=adovbs.inc-->
<%
Response.Expires = 0
Dim Cnn,objRS, strOut, strQ, strC
StrC= Driver={Microsoft Access Driver (*.mdb)}; DBQ= & Server.MapPath(/asp24) & /NorthWind.mdb;
'建立連接
Set Cnn = Server.CreateObject(ADODB.Connection)
Cnn.Open StrC
'建立Recordset對象
Set objRS = Server.CreateObject(ADODB.Recordset)
objRS.CursorLocation =adUseClient
objRS.CursorType = adOpenStatic
objRS.LockType = adLockOptimistic
strQ = SELECT 運貨商ID, 公司名稱, 電話FROM 運貨商
objRS.Open strQ, Cnn, , , adCmdText
Set objRS.ActiveConnection = Nothing '斷開記錄集
Cnn.Close '關閉連接
Set Cnn = Nothing
Response.Write <HTML><BODY>
'下面使用斷開的記錄集
Do While (Not objRS.EOF)
strOut = objRS(運貨商ID) & , & objRS(公司名稱) & , & objRS(電話)
Response.Write Server.HTMLEncode(strOut) & <BR>
objRS.MoveNext
Loop
Response.Write <BR>準備新增或插入記錄:
'若需要更新資料庫, 則要重新建立連接
Set Cnn = Server.CreateObject(ADODB.Connection)
Cnn.Open strC
Set objRS.ActiveConnection = Cnn
objRS.Filter = 公司名稱= '吳豐'
If objRS.EOF Then
objRS.AddNew
objRS(公司名稱) = 吳豐
objRS(電話) = 571-7227298
objRS.Update
Response.Write 符合該條件的記錄不存在, 則新增.<BR>
Else
objRS(電話) = 571-7227071
Response.Write 符合該條件的記錄存在, 則Update.<BR>
objRS.Update
End If
Set objRS.ActiveConnection = Nothing
Cnn.close
Set Cnn = Nothing
objRS.Close
Set objRS = Nothing
Response.Write </BODY></HTML>
%>