串連到資料存放區

來源:互聯網
上載者:User
資料


    如果需要訪問一個資料存放區,應該建立一個到資料存放區的串連。前面已經提到過:可以顯式地建立一個Connection對象,或者讓ADO隱含地建立一個串連。對於任何一種方式,都必須知道資料存放區的詳細內容。
       雖然用於串連的實際細節不盡相同,但對於所有類型的資料存放區,其串連的實際方法是相同的。這並不令人驚奇,因為不同的提供者需要不同類型的資訊。在允許使用者訪問資料存放區之前,一些提供者需要使用者的認證,而別的提供者卻接受預設的安全性憑證。
       串連到資料來源有好幾種方法:
       · 連接字串。在字串中放入串連的細節,或在開啟資料存放區時,直接將串連細節加入到命令中。這種方法的優點是串連細節將保留在ASP頁面中。不足之處,如果你有較多的頁面,在改變了串連細節時,將陷於繁重的維護工作當中。解決的方法是建立一個包含串連細節的字串變數,並放進一個ASP包含檔案,這樣的話僅僅有一個連接字串的執行個體,但能保持與其他的ASP頁面相符。另一個常用的技術就是將應用程式中的連接字串儲存到狀態變數中,這樣可以被應用程式中的所有頁面使用。
       · 資料連結檔案。這是一個含有串連細節的檔案(副檔名為.udl)。優點是對於任何資料的ASP頁面只需要一個資料連結檔案。要建立一個資料連結檔案,只需建立一個新的文字檔,並重新命名(要確保Windows資源管理員顯示副檔名)。一旦重新命名了該檔案,就可以開啟它(雙擊)以顯示Data Link Properties對話方塊。以前版本的ADO允許從Windows資源管理員的New菜單建立資料連結檔案。我們將在本章稍後看到有關資料連結檔案的內容。
       · ODBC資料來源,或DSN。有點類似於資料連結檔案,但只適用於ODBC資料來源。它們集中起來用於ASP頁面,資料來源必須是系統資料來源。ODBC資料來源從ODBC資料來源管理器(ODBC Data Source Administrator)中建立,這個工具可在Administrative Tools檔案夾中找到。
       這三種方式無論哪一種都可以使用,使用哪一種只是一種偏愛而已。直接的連接字串可能速度快一些,因為提供所有的串連細節。資料連結檔案需要從檔案中讀出串連細節,ODBC資料來源需要從註冊表中讀取串連細節。當然,速度的差異是很小的,每種方法各有優缺點。

8.3.1 連接字串
       連接字串依賴於提供者,因為每個資料提供者可能需要不同的細節。
       值得注意的重要一點是,ODBC的OLE DB提供者是預設的,所以,如果不使用Provide=部分,系統將自動地使用ODBC。
       下面為不同的提供者列舉了連接字串的例子,在本書的後面將會看到更多的例子。
1.  微軟Access
如果使用ODBC,而沒有DSN:
Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:wroxdatabase_name.mdb
對於本地的OLE DB提供者:
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:wroxdatabase_name.mdb
上面的例子說明了Access資料庫存放於C:wrox目錄下。雖然讀者可能會嘗試將資料庫作為Web檔案存放於相同的目錄下,但不要這樣做,否則任何人都可以下載整個資料庫檔案。將資料庫存放於Web目錄外永遠是明智的,沒有人可以從外面訪問該檔案。
2.  微軟SQL Server
對於微軟SQL Server,使用針對ODBC的提供者:
Driver={SQL Server}; Server=server_name; Database=database_name; UID=user_name;
PWD=user_password
例如:
Driver={SQL Server}; Server=WATCHER; Database=pubs; UID=davids; PWD=whisky
對於本地OLE DB提供者,文法類似:
Provider=SQLOLEDB; Data Source=server_name; Initial Catalog=database_name;
User Id=user_name; Password=user_password
例如:
Provider=SQLOLEDB; Data Source=WATHCHER; Initial Catalog=pubs; User Id=davids;
Password=whisky
3.  微軟索引服務
索引服務只能通過本地的OLE DB提供者使用。其文法:
Provider=MSIDXS; Data Source=catalog_name
例如,使用Web目錄
Provider=MSIDXS; Data Source=Web
4.  ODBC驅動程式
在使用針對ODBC的OLE DB提供者的例子中,Driver顯得較為冗長。例如:
Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:wroxdatabase_name.mdb
當建立一個新資料來源時,使用的驅動程式的準確名字應該是從驅動程式列表中得到的,如圖8-6所示:

5.  資料連結檔案
以前版本的ADO允許在資源管理員中的目錄上右擊滑鼠來建立一個資料連結檔案。建立了新檔案後,開啟該檔案從而得到Data Link Properties對話方塊。在寫本書的時候,微軟已經從滑鼠右鍵菜單中刪除了該選項,因為他們覺得這會讓使用者感到混亂。但微軟聲稱會提供一個註冊表檔案以便再次引入這項功能。
不要忘了,也可以簡單地通過建立一個空文字檔,並將其副檔名改為.udl來建立一個資料連結檔案。
一旦有了物理上的資料連結檔案,就可以通過滑鼠雙擊或者右擊滑鼠選擇Open開啟檔案。接下來,讀者會看到圖8-7所示的對話方塊:

圖中的詳細內容因選擇的提供者的不同而不同。上面的例子顯示了SQL Server提供者,串連到一個稱為WATHER的SQL Server上,以davids的身份登入(口令被屏蔽了),使用pubs資料庫。注意,如果選擇Allow saving password選擇,輸入的口令將會在UDL檔案中以明文儲存下來。
如果要改變提供者,可以選擇“Provider”(提供者)選項卡,如圖8-8所示:

通過這個選擇,可以選出所需的提供者,然後按下Next按鈕填入適當的串連細節。
也可以在文字編輯器中編輯檔案,如圖8-9所示:

可以看到在UDL檔案中確實存有一個連接字串。
要使用資料連結檔案,僅需要在開啟串連時指定這個資料連結檔案:
conPubs.Open "File Name=C:wroxpubs.udl"
6.  ODBC資料來源
ODBC資料來源(通常稱謂資料來源名稱,即DSN)可以通過Administrative菜單的Data Source選項進行設定。在以前版本的Windows中把它作為控制台中的一個小程式。為了在ASP頁面中訪問DSN,必須確定該DSN已經被設定為系統DSN。這隻需在Data Source Administrator中選擇System DSN選項卡,然後選擇Add按鈕,如圖8-10所示:

然後,就可以選擇希望使用的ODBC驅動程式,並填入適當的ODBC參數。
一旦建立了DSN,可以使用連接字串的“DSN=”屬性。例如:
conPubs.Open "DSN=pubs"

8.3.2 使用包含檔案
       使用包含檔案連接字串的包含檔案提供了一個中心地區來儲存許多ASP頁面需要的串連細節。要這樣做,僅僅需要建立一個新的ASP檔案,不妨稱為Connection.asp,並在其中加入下面的代碼:
       <%
       strConn = "Provider=SQLOLEDB; Data Source=WATCHER; " & _
                     "Initial Catalog=pubs; User Id=davids; Password=whisky"
       %>
       在ASP頁面中,現在可以在該頁的頂端加入這一行:
       <!-- #INCLUDE FILE="Connection.asp" -->
       這樣不必再為每個ASP頁面都輸入串連細節,同時方便於更改整個網站都使用的串連。       包含檔案也是放置METADATA標籤的好地方。
8.3.3 使用串連狀態
       將連接字串存入應用程式變數是一個常用的技巧,同使用一個包含檔案一樣有效。例如,可以在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")
       從個人的角度,我更喜歡使用包含檔案的方法,因為我寫了許多不同的串連到各種伺服器和資料庫的例子。使用應用程式方法將意味著每次必須關閉瀏覽器重新啟動應用程式。讀者可以使用自己喜歡的任一種方法,在速度上它們並沒有差別。
       對於在本書的這節內的例子,將使用一個含有連接字串的connection.asp檔案人作為一個包含檔案。

8.3.4 串連文法
       上面所敘述的是相關理論,當確實要與資料存放區串連時,應該怎麼辦?如果使用顯式定義的Connection對象,可以使用Open方法,它的文法如下:
       connection.Open [ConnectionString], [UserID], [Password], [Options]
       參數如表8-1所示:
表8-1  Open方法的參數及說明
參 數
說 明

ConnectionString
包含串連細節的字串。可以是ODBC DSN的名稱、資料連結檔案的名稱或真實的串連細節

UserID
串連期間,使用者使用的名字。覆蓋連接字串中提供的任何使用者名稱

Password
使用者的口令。覆蓋連接字串中提供的任何口令

Options
可以是adAsyncConnect,指定非同步地建立串連。忽略這個參數,則建立一個同步串連

       非同步串連不用於ASP環境,因為指令碼語言不能接收來自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
       這兩種實現方法之間沒有什麼區別,如果使用前一種方法來實現串連,ConnectionString屬性同時也被賦值。
       值得注意的是,一旦與資料存放區建立了串連,ADO可能會改變ConnectionString屬性值。不必擔心,ADO只填寫一些額外的屬性值。

8.3.6 串連緩衝池
       串連緩衝池(connection pool)總使許多人感到困惑,其實原理非常簡單。當關閉一個串連,就使用者(和ADO)而言,這個串連已經關閉。但實際上OLE DB並沒有關閉這個串連,只是將其放入了非活動的串連緩衝池中。任何時候使用者(或其他人)開啟一個串連,OLE DB首先檢測串連緩衝池中是否有相同串連細節的串連存在。如果有,將直接從緩衝池中取得此串連。如果沒有,則為使用者建立一個新的串連。為了避免浪費資源,經過一段預設的時間段後,就從緩衝池中清除該串連。
       那麼,它的優點在哪裡?開啟一個串連可能是所進行的操作中最慢的操作之一,串連緩衝池使使用者能與資料存放區再次串連而無須重新建立串連。這對於那些連續開啟和關閉大量串連的Web網站顯得特別重要。
       對於ODBC串連,串連緩衝池由ODBC Data Source Administrator控制。對於OLE DB,不能改變串連緩衝池(或叫會話緩衝池)。
       必須注意的是,串連緩衝池不是串連共用。一個串連只有在被客戶關閉後才能再次使用。
       內務處理
       為了使串連緩衝池生效,必須確保內務處理(Housekepping)處於有序狀態。這包括及時關閉Connection對象,這樣它們才能回到緩衝池重新使用。你可能認為不斷地開啟、關閉串連對系統的開銷很大,但必須衡量一下可擴充性——你的應用程式可能有許多人在使用,OLE DB又非常善於管理串連資源。
       一般的原則是:儘可能晚地建立串連,同時又要儘可能早地關閉串連,這樣保證串連開啟的時間段最短。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。