用ASP訪問資料庫的幾種常見方式

來源:互聯網
上載者:User
用ASP訪問資料庫的幾種常見方式

ActiveX Data Objects (ADO) 是一項容易使用並且可擴充的將資料庫訪問添加到 Web 頁的技術。可以使用 ADO 去編寫緊湊簡明的指令碼以便串連到 Open Database Connectivity (ODBC) 相容的資料庫和 OLE DB 相容的資料來源。如果您是一個對資料庫連接有一定瞭解的指令碼編寫人員,那麼您將發現 ADO 命令語句並不複雜而且容易掌握。同樣地,如果您是一個經驗豐富的資料庫編程人員,您將會正確認識 ADO 的先進的與語言無關性和查詢處理功能。

建立 ODBC DSN 檔案
在建立資料庫指令碼之前,必須提供一條使 ADO 定位、標識和與資料庫通訊的途徑。資料庫驅動程式使用 Data Source Name (DSN) 定位和標識特定的 ODBC 相容資料庫,將資訊從 Web 應用程式傳遞給資料庫。典型情況下,DSN 包含資料庫配置、使用者安全性和定位資訊,且可以擷取 Windows NT 登錄機碼中或文字檔的表格。

通過 ODBC,您可以選擇希望建立的 DSN 的類型:使用者、系統 或 檔案。使用者和系統 DSN 儲存在 Windows NT 註冊表中。系統 DSN 允許所有的使用者登入到特定的伺服器上去訪問資料庫,而使用者 DSN 使用適當的安全身份證明限制資料庫到特定使用者的串連。檔案 DSN 用於從文字檔中擷取表格,提供了對多使用者的訪問,並且通過複製 DSN 檔案,可以輕易地從一個伺服器轉移到另一個伺服器。由於以上原因,本主題中的樣本將使用檔案 DSN。

通過在 Windows 的“開始”菜單開啟“控制台”,您可以建立基於 DSN 的檔案。雙擊“ODBC”表徵圖,然後選擇“檔案 DSN”屬性頁面,單擊“添加”,選擇資料庫驅動程式,然後單擊“下一步”。按照後面的指示配置適用於您的資料庫軟體的 DSN。

配置 Microsoft Access 資料庫的檔案 DSN

在“建立新資料來源”對話方塊中,從列表框選擇“Microsoft Access Driver”,然後單擊“下一步”。
鍵入您的 DSN 檔案名稱,然後單擊“下一步”。
單擊“完成”建立資料來源。
在“ODBC Microsoft Access 97 安裝程式”對話方塊中,單擊“選擇”。選擇 Microsoft Access 資料庫檔案 (*.mdb),然後單擊“確定”。
注意 由於效能和可靠性的原因,我們極力推薦您使用“客戶-伺服器資料庫引擎”配置由這樣一種 Web 應用程式驅動的資料,這些 Web 應用程式必須滿足 10 個以上的使用者的同時訪問。儘管 ASP 可以使用任何 ODBC 相容的資料庫,但它是為使用客戶-伺服器資料庫而設計的,而且經過了嚴格的測試,這些資料庫包括 Microsoft SQL Server、Oracle 等。

ASP 支援共用檔案資料庫(如 Microsoft Access 或 Microsoft FoxPro)作為有效資料來源。儘管在 ASP 文檔中的一些樣本使用共用檔案資料庫,但我們建議只將此類資料庫引擎用於開發或有限的配置方案。共用檔案資料庫可能無法很好地適用於可滿足高需求、高品質的 Web 應用程式的客戶-伺服器資料庫。

 

配置 SQL Server 資料庫檔案 DSN

注意 如果資料庫駐留在遠程伺服器上,請與伺服器管理員聯絡,擷取附加的配置資訊;下面的過程使用 SQL Server 的 ODBC 預設的設定,它可能不適用於您的硬體設定。

在“建立新資料來源”對話方塊中,從列表框中選擇“SQL Server”,然後單擊“下一步”。
鍵入 DSN 檔案的名稱,然後單擊“下一步”。
單擊“完成”建立資料來源。
鍵入運行 SQL 服務程式的伺服器的名稱、登入 ID 和密碼。
在“建立 SQL Server 的新資料來源”對話方塊中,在“伺服器”列表框中鍵入包含 SQL Server 資料庫的伺服器的名稱,然後單擊“下一步”。
選擇驗證登入 ID 的方式。
如果要選擇 SQL 伺服器驗證,請輸入一個登入 ID 和密碼,然後單擊“下一步”。
在“建立 SQL Server 的新資料來源”對話方塊中,設定預設資料庫、預存程序設定的驅動程式和 ANSI 標識,然後單擊“下一步”。(要擷取詳細資料,請單擊“協助”。)
在對話方塊(同樣名為“建立 SQL Server 的新資料來源”)中,選擇一種字元轉換方法,然後單擊“下一步”。 (詳細資料,請單擊“協助”。)
在下一個對話方塊(同樣名為“建立 SQL Server 的新資料來源”)中,選擇登入設定。
注意 典型情況下, 您只能使用日誌來調試資料庫訪問問題。

在“ODBC Microsoft SQL Server 安裝程式”對話方塊中,單擊“測試資料來源”。如果 DSN 正確建立,“測試結果”對話方塊將指出測試成功完成。
SQL server 串連和安全資訊
如果您正在開發用於串連遠程 SQL Server 資料庫的 ASP 資料庫應用程式,應考慮以下問題:

串連方案- 您可以選擇 TCP/IP 通訊端和具名管道的方法訪問遠端 SQL Server 資料庫。當使用具名管道時,因為在建立串連之前,資料庫使用者必須被 Windows NT 確認,所以對只有適當的 SQL Server 訪問身份而在該電腦上沒有 Windows NT 使用者帳號的使用者可能會被拒絕訪問具名管道。作為一種替代方案,使用 TCP/IP 通訊端的串連可直接連接到資料庫伺服器,而不必通過使用具名管道的中間電腦。因為使用 TCP/IP 通訊端串連可直接連接到資料庫 server,所以通過 SQL Server 的確認,使用者就可以獲得訪問權,而不必通過 Windows NT 的確認。
注意 在串連到遠端資料庫時使用 TCP/IP 通訊端可提高效能。

安全性 - 如果您使用 SQL Server 的 整合 或 混合 安全特性,並且 SQL Server 資料庫位於遠程伺服器上,則不能使用 Windows NT 請求/響應的確認。也就是說,不能將 Windows NT 請求/響應身份證轉寄到遠端電腦上,而只能使用基本驗證,它根據使用者提供使用者名稱和口令資訊進行。
有關這一主題的詳細資料,請參閱 http://www.microsoft.com/sqlsupport/default.htm
上的 Microsoft SQL Server 支援人員首頁。

 

配置 Oracle 資料庫檔案 DSN

首先要確保 Oracle 使用者軟體被正確地安裝要建立 DSN 的電腦上。詳細資料,請與伺服器管理員聯絡或參閱資料庫軟體文檔。

在“建立新資料來源”對話方塊中,從列表框中選擇“Microsoft ODBC for Oracle”,然後單擊“下一步”。
鍵入 DSN 檔案的名稱,然後單擊“下一步”。
單擊“完成”建立資料來源。
輸入使用者名稱、密碼和伺服器名,然後單擊“確定”。
注意 DSN 檔案用 .dsn 副檔名,位於 \Programs\Common Files\ODBC\Data Sources 目錄中。

有關建立 DSN 檔案的詳細資料,請訪問 Microsoft ODBC Web 網站:http://microsoft.com/odbc/。

串連資料庫
訪問資料庫資訊的第一步是和資料庫源建立串連。ADO 提供 Connection 對象,可以使用該對象建立和管理應用程式和 ODBC 資料庫之間的串連。Connection 對象具有各種屬性和方法,可以使用它們開啟和關閉資料庫連接,並且發出查詢請求來更新資訊。

要建立資料庫連接,首先應建立 Connection 對象的執行個體。例如,下面的指令碼建立 Connection 對象,接著開啟資料庫連接:


注意 無論在等號 (=) 之前還是之後,DSN 字串都不能包含空格。

在這種情況下,Connection 對象的 Open 方法引用基於 DSN 的檔案,其中包含關於資料庫的位置和配置資訊。也可以不引用 DSN,直接顯式引用供應程式、資料來源、使用者識別碼 和密碼。

用 Connection 對象執行查詢
用 Connection 對象的 Execute 方法,您可以發出結構化查詢語言 (SQL) (SQL) 查詢資料庫源並檢索結果。SQL 是用於與資料庫通訊的工業標準語言,它有許多命令可用來檢索和更新資訊。

下面的指令碼使用 Connection 對象的 Execute 方法在 SQL INSERT 命令的表格中發出查詢,該命令將資料插入特定的資料庫表格。在下面的樣本中,指令碼將名稱 Jose Lugo 插入名為 Customers 的資料庫表中。


注意 基於 DSN 路徑字串的檔案在等號(=)前後不應包含空格。

除了 SQL INSERT 命令以外,您也可以使用 SQL UPDATE 和 DELETE 命令更改和刪除資料庫資訊。

用 SQL UPDATE 命令,您可以改變資料庫表中各項目值。下面的指令碼使用 UPDATE 命令將 Customers 表中每個 LastName 欄位包含姓 Smith 記錄的 FirstName 欄位更改為 Jeff。


要想從資料庫表中刪除特定的記錄,可使用 SQL DELETE 命令。下面的指令碼從 Customers 表中刪除了所有姓 Smith 的行:


注意 在使用 SQL DELETE 命令時,必須謹慎從事。當使用不帶 WHERE 子句的 DELETE 命令時,它將刪除表中的所有行。一定要包含 SQL WHERE 子句來指定要刪除的確切行。

使用 Recordset 對象處理結果
儘管 Connection 對象簡化了串連資料庫和查詢任務,但 Connection 對象仍有許多不足。確切地說,檢索和顯示資料庫資訊的 Connection 對象不能用於建立指令碼;您必須確切知道要對資料庫作出的更改,然後才能使用查詢實現更改。

對於檢索資料、檢查結果、更改資料庫,ADO 提供了 Recordset 對象。正如它的名稱所暗示的那樣,Recordset 對象有許多您可以使用的特性,根據您的查詢限制,檢索並且顯示一組資料庫行,即記錄。 Recordset 對象保持查詢返回的記錄的位置,允許您一次一項逐步掃描結果。

根據 Recordset 對象的指標類型屬性設定,您可以滾動和更新記錄。資料庫指標可以讓您在一組記錄中定位到特定的項。指標還用於檢索和檢查記錄,然後在這些記錄的基礎上執行操作。Recordset 對象有一些屬性,可用於精確地控制指標的行為,提高您檢查和更新結果的能力。例如,您可以使用 CursorType 和 CursorLocation 屬性設定指標的類型,將結果返回給用戶端應用程式(結果通常保留在資料庫伺服器上)並顯示其他使用者對資料庫的最後一次更改。

檢索記錄
一個成功的資料庫應用程式都使用 Connection 對象建立連結並使用 Recordset 對象處理返回的資料。通過“協調”兩個對象的特定功能,您可以開發出幾乎可以執行任何資料處理任務的資料庫應用程式。例如,下面的伺服器端指令碼使用 Recordset 對象執行 SQL SELECT 命令。SELECT 命令檢索一組基於查詢限制的資訊。查詢也包含 SQL WHERE 子句,用來縮小查詢的範圍。此例中,WHERE 子句將查詢限制為所有的 Customers 資料庫表中包含的姓 Smith 的記錄。


注意,在前面的例子中,用來建立資料庫連接的 Connection 對象和 Recordset 對象使用該串連從資料庫中檢索結果。當您需要精確地設定和資料庫建立連結所採用的方式時,這個方法是非常有用的。例如,如果您需要在串連嘗試失敗之前指定等待的時間,則需要使用 Connection 對象去設定屬性。但是,如果您僅僅想使用 ADO 預設的串連屬性建立串連,則應該使用 Recordset 對象的 Open 方法去建立連結:


當使用 Recordset 對象的 Open 方法建立一個串連時,必須使用 Connection 對象去保證連結的安全。

用 Command 對象改善查詢
通過 ADO Command 對象,可以象用 Connection 對象和 Recordset 對象那樣執行查詢,唯一的不同在於用 Command 對象您可以在資料庫源上準備、編譯您的查詢並且反覆使用一組不同的值來發出查詢。這種方式的編譯查詢的優點是您可以最大程度地減少向常設查詢重複發出修改的請求所需的時間。另外,您還可以在執行之前通過您的查詢的可變部分的選項使 SQL 查詢保持局部未定義。

Command 對象的 parameter 集合減少了您的麻煩,使您不必在每次重新發出查詢時重建立立查詢。例如,如果需要有規律地更新基於庫存清單的 Web 系統中的供應和價格資訊,可以用下面的方法預先定義查詢:


請檢查上面的例子,您將注意到,指令碼用不同的數值重複構建和發出一個 SQL 查詢,而沒有重新定義和重發送查詢到資料庫源。用 Command 對象編譯查詢也可避免 SQL 查詢引起的合并字串和表格變數問題。特別是,通過使用 Command 對象的 Parameter 集合可以避免與定義字串、日期、時間變數的類型有關的問題。例如,包含“'”的 SQL 查詢值可能導致查詢失敗:

strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Robert','O'Hara')"
注意,姓 O'Hara 中包含一個“'”,它與在 SQL VALUES 關鍵字中用來表示資料的“'”衝突。通過將查詢數值作為 Command 對象參數綁定,可以避免此類問題。

結合 HTML 表格和資料庫訪問
包含 HTML 表格的 Web 頁可使使用者遠程查詢資料庫並且檢索特定的資訊。用 ADO 您可以建立非常簡單的指令碼來收集使用者表格資訊、建立自訂的資料庫查詢以及將資訊返回給使用者。使用 ASP Request 對象,您可以檢索輸入到 HTML 表格的資訊並將這些資訊合并到 SQL 陳述式中。例如,下面的指令碼模組將 HTML 表格提供的資訊插入表格中。此指令碼用 Request 對象的 Form 集合收集使用者資訊。


有關表格和使用 ASP Request 對象的詳細資料,請參閱 使用 HTML 表格。

管理資料庫串連
設計一個能經得起考驗的 Web 資料庫應用程式(例如為幾千個客戶服務的聯機購物應用程式)的最大挑戰,在於如何合理地管理資料庫串連。開啟並且保持資料庫連接,即使在沒有資訊傳輸時,也會嚴重耗費資料庫伺服器的資源並且可能會導致串連性問題。設計良好的 Web 資料庫應用程式將回收資料庫連接並能夠補償由於網路堵塞造成的延遲。

使連線逾時
活動的突然增長可能使資料庫伺服器變得十分笨拙,大量增加建立資料庫連接的時間。結果是,過長的串連延時將降低資料庫的效能。

用 Connection 對象的 ConnectionTimeout,您可以限制放棄串連嘗試並發出錯誤訊息之前應用程式等待的時間。例如,下面的指令碼設定 ConnectionTimeout 屬性,在取消串連嘗試之前等待 20 秒:

Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 20
cn.Open "FILEDSN=MyDatabase.dsn"

預設的 ConnectionTimeout 屬性是 30 秒。

注意 在將 ConnectionTimeout 屬性合并到資料庫應用程式之前,一定要確保串連提供者和資料來源支援該屬性。

共用串連
經常建立和中斷資料庫連接的 Web 資料庫應用程式可能會降低資料庫伺服器的效能。ASP 支援用 ODBC 3.5 的共用特性有效管理串連。串連共用維持開啟的資料庫連接並管理不同的使用者共用該串連,以維持其效能和減少閒置串連數。對每一個串連請求,串連池首先確定池中是否存在閒置串連。如果存在,串連池返回串連而不是建立到資料庫的新串連。

如果希望將 ODBC 驅動程式加入到串連共用中,則必須設定資料庫驅動程式並在 Windows NT 註冊表中設定驅動程式的 CPTimeout 屬性。當 ODBC 中斷連線時,串連被存入池中,而不是被斷開。CPTimeout 屬性決定在串連池中的串連保留的時間長度。如果在池中串連保留的時間比 CPTimeout 設定的時間長,則串連將被關閉並且從池中刪除。CPTimeout 的預設值是 60 秒。

您可以通過建立如下設定的註冊表鍵來有選擇地設定 CPTimeout 的屬性,從而啟用特定 ODBC 資料庫驅動程式的串連池:


\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\driver-name\CPTimeout = timeout
(REG_SZ, units are in seconds)

例如,下面的鍵將 SQL Server 驅動程式的串連池的逾時設定定為 180 秒(3 分鐘)。

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout = 180
注意 預設情況下,通過將 CPTimeout 設定為 60 秒,Web 服務器將啟用 SQL Server 的串連池。

使用跨頁串連
儘管您可以通過儲存 ASP 的 Application 對象的串連重複使用跨頁串連,但是,始終使串連保持開啟是不必要的,也沒有充分利用串連池的優點。如果有許多使用者需要串連到同一個 ASP 資料庫應用程式,一個好方法就是,將跨頁連接字串置於 ASP 的 Application 對象中,重複使用資料庫連接。例如,可以在 Global.asa 檔案的 Application_OnStart 事件程序中指定連接字串,如下面的指令碼所示:


Application.lock
Application("ConnectionString") = "FILEDSN=MyDatabase.dsn"
Application.unlock

然後,在每一個訪問資料庫的 ASP 檔案中寫入:


要想建立連線物件的執行個體,請使用以下指令碼:

cn.Open Application("ConnectionString")
對於開啟的串連,可以在頁尾寫入以下指令碼,關閉串連:

cn.Close
在單個使用者需要重複使用跨頁串連的情況下,使用 Session 對象串連比使用 Application 對象更好。

關閉串連
要想更好地使用串連池,就應儘快地關閉資料庫連接。預設情況下,當指令碼執行完以後,串連將被終止。當不再需要串連時將其關閉,就可以減少對資料庫伺服器的要求並可以使其他使用者能夠使用該串連。

可以使用 Connection 對象的 Close 方法終止 Connection 對象和資料庫之間的串連。下面的指令碼開啟串連,然後將其關閉:

轉載自:諾金軟體電腦網路


相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.