當使用一個記錄集時,是否應該建立一個單獨的Connection對象?
要想正確回答這個問題,需要在兩個不同情況下實驗室檢驗結果:第一是每頁執行一個資料庫處理的情況,第二是每頁執行多個資料庫處理的情況。
在前面的例子中,我們已經建立了一個單獨的Connection對象,並將它傳遞到記錄集的ActiveConnection 屬性。但是也有可能僅僅把連接字串傳遞到這個屬性中,從而可以避免一個額外的步驟,即在指令碼( ADO__03.asp )中例示和配置一個單獨的組件:
objRS.ActiveConnection = Application("Conn")
儘管我們仍然在記錄集中建立了一個串連,但它是在非常最佳化的情況下建立的,所以剛一開始我們就看到啟動時間比以前的測試減少了23%,同預料中一樣,同每個記錄的顯示時間幾乎沒有什麼差別。
因此,我們的第二個規則是:
* 當使用一個單個記錄集時,將連接字串傳遞到ActiveConnection屬性中。
下面要確定當在一個頁面上建立多個記錄集時,這個邏輯是否依然成立。為測試這個情況,我引入了FOR 迴圈,將前面的例子重複10次。在這個測試中,我們還將研究3種選擇:
第一,我們在每個迴圈中建立並銷毀Connection 對象( ADO__04.asp ):
Dim i
For i = 1 to 10
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("Conn")
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 0 'adOpenForwardOnly
objRS.LockType = 1 'adLockReadOnly
objRS.Open Application("SQL")
If objRS.EOF Then
Response.Write("No Records Found")
Else
'write headings
...
'write data
...
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Next
第二,在迴圈外建立一個單獨的Connection 對象,並與每個記錄集共用它( ADO__05.asp ):
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("Conn")
Dim i