?? 訪問數據庫 (2001年1月20日).txt
字號:
訪問數據庫 (2001年1月20日)
網友更新 分類:數據庫 作者: yanyi(推薦) 推薦:yanyi 閱讀次數:1121
(http://www.codesky.net)
--------------------------------------------------------------------------------
訪問數據庫
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/
上的 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 對象,接著打開數據庫連接:
lt;%
'Create a connection object
Set cn = Server.CreateObject("ADODB.Connection")
'Open a connection; the string refers to the DSN
cn.Open "FILEDSN=MyDatabase.dsn"
%>
注意 無論在等號 (=) 之前還是之后,DSN 字符串都不能包含空格。
在這種情況下,Connection 對象的 Open 方法引用基于 DSN 的文件,其中包含關于數據庫的位置和配置信息。也可以不引用 DSN,直接顯式引用供應程序、數據源、用戶 ID 和密碼。有關建立連接的可選方法的詳細信息,請參閱 Microsoft ActiveX Data Objects (ADO)。
用 Connection 對象執行查詢
用 Connection 對象的 Execute 方法,您可以發出結構化查詢語言 (SQL) 查詢數據庫源并檢索結果。SQL 是用于與數據庫通訊的工業標準語言,它有許多命令可用來檢索和更新信息。
下面的腳本使用 Connection 對象的 Execute 方法在 SQL INSERT 命令的表格中發出查詢,該命令將數據插入特定的數據庫表格。在下面的示例中,腳本將名稱 Jose Lugo 插入名為 Customers 的數據庫表中。
lt;%
'Define file based DSN
strDSN = "FILEDSN=MyDatabase.dsn"
'Instantiate the Connection object and open a database connection
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN
'Define SQL SELECT statement
strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Jose','Lugo')"
'Use the Execute method to issue a SQL query to database
cn.Execute(strSQL)
%>
注意 基于 DSN 路徑字符串的文件在等號(=)前后不應包含空格。
除了 SQL INSERT 命令以外,您也可以使用 SQL UPDATE 和 DELETE 命令更改和刪除數據庫信息。
用 SQL UPDATE 命令,您可以改變數據庫表中各項目值。下面的腳本使用 UPDATE 命令將 Customers 表中每個 LastName 字段包含姓 Smith 記錄的 FirstName 字段更改為 Jeff。
lt;%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.Execute "UPDATE Customers SET FirstName = 'Jeff' WHERE LastName = 'Smith' "
%>
要想從數據庫表中刪除特定的記錄,可使用 SQL DELETE 命令。下面的腳本從 Customers 表中刪除了所有姓 Smith 的行:
lt;%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Smith'"
%>
注意 在使用 SQL DELETE 命令時,必須謹慎從事。當使用不帶 WHERE 子句的 DELETE 命令時,它將刪除表中的所有行。一定要包含 SQL WHERE 子句來指定要刪除的確切行。
使用 Recordset 對象處理結果
盡管 Connection 對象簡化了連接數據庫和查詢任務,但 Connection 對象仍有許多不足。確切地說,檢索和顯示數據庫信息的 Connection 對象不能用于創建腳本;您必須確切知道要對數據庫作出的更改,然后才能使用查詢實現更改。
對于檢索數據、檢查結果、更改數據庫,ADO 提供了 Recordset 對象。正如它的名稱所暗示的那樣,Recordset 對象有許多您可以使用的特性,根據您的查詢限制,檢索并且顯示一組數據庫行,即記錄。 Recordset 對象保持查詢返回的記錄的位置,允許您一次一項逐步掃描結果。
根據 Recordset 對象的指針類型屬性設置,您可以滾動和更新記錄。數據庫指針可以讓您在一組記錄中定位到特定的項。指針還用于檢索和檢查記錄,然后在這些記錄的基礎上執行操作。Recordset 對象有一些屬性,可用于精確地控制指針的行為,提高您檢查和更新結果的能力。例如,您可以使用 CursorType 和 CursorLocation 屬性設置指針的類型,將結果返回給客戶端應用程序(結果通常保留在數據庫服務器上)并顯示其他用戶對數據庫的最后一次更改。有關配置 Recordset 對象指針的信息,請參閱 Microsoft ActiveX Data Objects (ADO)。
檢索記錄
一個成功的數據庫應用程序都使用 Connection 對象建立鏈接并使用 Recordset 對象處理返回的數據。通過“協調”兩個對象的特定功能,您可以開發出幾乎可以執行任何數據處理任務的數據庫應用程序。例如,下面的服務器端腳本使用 Recordset 對象執行 SQL SELECT 命令。SELECT 命令檢索一組基于查詢限制的信息。查詢也包含 SQL WHERE 子句,用來縮小查詢的范圍。此例中,WHERE 子句將查詢限制為所有的 Customers 數據庫表中包含的姓 Smith 的記錄。
lt;%
'Establish a connection with data source
strDSN = "FILEDSN=MyDatabase.dsn"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN
'Instantiate a Recordset object
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
'Open a recordset using the Open method
' and use the connection established by the Connection object
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' "
rsCustomers.Open strSQL, cn
'Cycle through record set and display the results
' and increment record position with MoveNext method
Set objFirstName = rsCustomers("FirstName")
Set objLastName = rsCustomers("LastName")
Do Until rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "
"
rsCustomers.MoveNext
Loop
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -