ASP 3.0高級編程(三十八)_ASP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:ASP技巧實(shí)例:關(guān)于對表單操作的程序以下為引用的內(nèi)容: Inserting Form content into Database with ASP. <% ' -- Loader.asp -- ' -- version 1.5.2
8.3.3 使用連接狀態(tài)將連接字符串存入應(yīng)用程序變量是一個常用的技巧,同使用一個包含文件一樣有效。例如,可以在global.asa文件中加入下面的代碼:
Sub Application_OnStart()
strConn = "Provider=SQLOLEDB; Data Source=WATCHER; " & _
"Initial Catalog=pubs; User Id=davids; Password=whisky"
Set Application("ConnectionString") = strConn
End Sub
在ASP頁面中,可以使用下面的代碼:
Set conPubs = Server.CreateObject("ADODB.Connection")
conPubs.Application("ConnectionString")
從個人的角度,我更喜歡使用包含文件的方法,因?yàn)槲覍懥嗽S多不同的連接到各種服務(wù)器和數(shù)據(jù)庫的例子。使用應(yīng)用程序方法將意味著每次必須關(guān)閉瀏覽器重新啟動應(yīng)用程序。讀者可以使用自己喜歡的任一種方法,在速度上它們并沒有差別。
對于在本書的這節(jié)內(nèi)的例子,將使用一個含有連接字符串的connection.asp文件人作為一個包含文件。
8.3.4 連接語法
上面所敘述的是相關(guān)理論,當(dāng)確實(shí)要與數(shù)據(jù)存儲連接時,應(yīng)該怎么辦?如果使用顯式定義的Connection對象,可以使用Open方法,它的語法如下:
connection.Open [ConnectionString], [UserID], [Password], [Options]
參數(shù)如表8-1所示:
表8-1 Open方法的參數(shù)及說明
參 數(shù)
說 明
ConnectionString
包含連接細(xì)節(jié)的字符串�?梢允荗DBC DSN的名稱、數(shù)據(jù)鏈接文件的名稱或真實(shí)的連接細(xì)節(jié)
UserID
連接期間,用戶使用的名字。覆蓋連接字符串中提供的任何用戶名
Password
用戶的口令。覆蓋連接字符串中提供的任何口令
Options
可以是adAsyncConnect,指定異步地建立連接。忽略這個參數(shù),則建立一個同步連接
異步連接不用于ASP環(huán)境,因?yàn)槟_本語言不能接收來自ADO的事件。
8.3.5 連接的例子
下面是幾個示例,這里假定strConn包含一個有效的連接字符串。
為了打開一個連接,使用Connection對象的Open方法。例如:
Set conPubs = Server.Connection("ADODB.Connection")
conPubs.Open strConn
' Some processing
conPubs.Close
也可以使用ConnectionString屬性:
Set conPubs = Server.CreateObject("ADODB.Connection")
conPubs.ConnectionString = strConn
conPubs.Open
' Some processing
conPubs.Close
這兩種實(shí)現(xiàn)方法之間沒有什么區(qū)別,如果使用前一種方法來實(shí)現(xiàn)連接,ConnectionString屬性同時也被賦值。
值得注意的是,一旦與數(shù)據(jù)存儲建立了連接,ADO可能會改變ConnectionString屬性值。不必?fù)?dān)心,ADO只填寫一些額外的屬性值。
8.3.6 連接緩沖池
連接緩沖池(connection pool)總使許多人感到困惑,其實(shí)原理非常簡單。當(dāng)關(guān)閉一個連接,就用戶(和ADO)而言,這個連接已經(jīng)關(guān)閉。但實(shí)際上OLE DB并沒有關(guān)閉這個連接,只是將其放入了非活動的連接緩沖池中。任何時候用戶(或其他人)打開一個連接,OLE DB首先檢測連接緩沖池中是否有相同連接細(xì)節(jié)的連接存在。如果有,將直接從緩沖池中取得此連接。如果沒有,則為用戶創(chuàng)建一個新的連接。為了避免浪費(fèi)資源,經(jīng)過一段缺省的時間段后,就從緩沖池中清除該連接。
那么,它的優(yōu)點(diǎn)在哪里?打開一個連接可能是所進(jìn)行的操作中最慢的操作之一,連接緩沖池使用戶能與數(shù)據(jù)存儲再次連接而無須重新創(chuàng)建連接。這對于那些連續(xù)打開和關(guān)閉大量連接的Web站點(diǎn)顯得特別重要。
對于ODBC連接,連接緩沖池由ODBC Data Source Administrator控制。對于OLE DB,不能改變連接緩沖池(或叫會話緩沖池)。
必須注意的是,連接緩沖池不是連接共享。一個連接只有在被客戶關(guān)閉后才能再次使用。
內(nèi)務(wù)處理
為了使連接緩沖池生效,必須確保內(nèi)務(wù)處理(Housekepping)處于有序狀態(tài)。這包括及時關(guān)閉Connection對象,這樣它們才能回到緩沖池重新使用。你可能認(rèn)為不斷地打開、關(guān)閉連接對系統(tǒng)的開銷很大,但必須衡量一下可擴(kuò)展性——你的應(yīng)用程序可能有許多人在使用,OLE DB又非常善于管理連接資源。
一般的原則是:盡可能晚地建立連接,同時又要盡可能早地關(guān)閉連接,這樣保證連接打開的時間段最短。
8.4 記錄集
前面已經(jīng)提到,記錄集是ADO中最常用的對象,這并不值得奇怪。畢竟,他們包含著數(shù)據(jù)。但是,對于記錄集還有比想象的更多的內(nèi)容,知道數(shù)據(jù)如何保存和處理很重要,因?yàn)檫@為選擇使用哪種記錄集提供了更多的參考。
記錄集有不同的類型,在一些細(xì)小的地方存在著差異,很容易造成失誤。首先需要認(rèn)真談?wù)摰氖枪鈽?biāo)的概念。
8.4.1 光標(biāo)
光標(biāo)(cursor)是讓許多人感到困惑的概念,但實(shí)際上非常的簡單。
光標(biāo)用來管理記錄集和記錄集的當(dāng)前位置,后者是由當(dāng)前記錄指針來處理的。
這不是Recordset對象所做的嗎?是的,但是記錄集也是依靠它的光標(biāo)。這仍然沒有回答光標(biāo)是什么這個問題,那么先來看一個記錄集,如表8-2所示:
AU_ID
AU_LNAME
AU_FNAME
PHONE
172-32-1176
White
Bob
408 496-7223
219-46-8915
Green
Marjorie
415 986-7020
238-95-7766
Carson
Cheryl
415 548-7723
267-41-2394
O'Leary
Michael
408 286-2428
274-80-9391
Straight
Dean
415 834-2919
341-22-1782
Smith
Meander
913 843-0462
這里有六行四列。打開一個記錄集,當(dāng)前記錄就是第一個記錄,即為Bob White的那條記錄。用什么來標(biāo)識當(dāng)前記錄?用當(dāng)前記錄指針。那么又如何處理這個指針呢?當(dāng)需要移到下一條記錄或者是其他記錄時,是通過光標(biāo)來實(shí)現(xiàn)的。在訪問當(dāng)前行的字段時,光標(biāo)知道目前位于哪一行,所以能返回正確的值。如果試圖移出記錄集的最后一行,光標(biāo)也會處理。
理解光標(biāo)的一種好方法是將光標(biāo)想象成為一個可以在記錄集內(nèi)移動的窗口。這一窗口與記錄集的單個行同樣高,同樣長,因此一次只能看到一行數(shù)據(jù)值。當(dāng)你移到另一條記錄時,這個窗口也跟著移動。
也許你認(rèn)為這相當(dāng)簡單,但它確實(shí)很重要,因?yàn)槟苡霉鈽?biāo)做什么是由光標(biāo)的類型決定的。
分享:例程:用ASP判斷文件地址是否有效以下為引用的內(nèi)容: <% Response.Write("<head><style><!--span{ font-size: 9pt }--></style></head&g
相關(guān)ASP教程:
- asp FSO 讀寫文件本文件實(shí)現(xiàn)代碼
- asp中isNull、isEmpty和空字符串的區(qū)別
- asp獲取用戶真實(shí)IP地址的方法
- asp連接sqlserver數(shù)據(jù)庫實(shí)現(xiàn)代碼
- asp中正則表達(dá)式過濾html代碼函數(shù)
- asp中g(shù)et post提交表單區(qū)別
- 網(wǎng)頁模板:ASP內(nèi)建對象Request
- xmlhttp的open方法使用詳解
- ASP的常用的自定義函數(shù)大全
- asp中用for循環(huán)的一個小技巧
- eWebEditor v3.8 列目錄
- ASP無組件分頁實(shí)現(xiàn)思路及代碼
- 相關(guān)鏈接:
- 教程說明:
ASP教程-ASP 3.0高級編程(三十八)
。