第7章網(wǎng)絡數(shù)據(jù)庫的訪問_第1頁
第7章網(wǎng)絡數(shù)據(jù)庫的訪問_第2頁
第7章網(wǎng)絡數(shù)據(jù)庫的訪問_第3頁
第7章網(wǎng)絡數(shù)據(jù)庫的訪問_第4頁
第7章網(wǎng)絡數(shù)據(jù)庫的訪問_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、7.1 ODBC與數(shù)據(jù)源操作與數(shù)據(jù)源操作7.2 使用使用ADO訪問數(shù)據(jù)庫訪問數(shù)據(jù)庫7.3 使用使用Connection對象訪問數(shù)據(jù)庫對象訪問數(shù)據(jù)庫7.4 使用使用Command對象訪問數(shù)據(jù)庫對象訪問數(shù)據(jù)庫7.5 使用使用Recordset對象訪問數(shù)據(jù)庫對象訪問數(shù)據(jù)庫7.6 Recordset對象的集合與使用對象的集合與使用7.7 實例教學實例教學小結小結7.1.1 ODBC概述概述7.1.2 創(chuàng)建創(chuàng)建ODBC數(shù)據(jù)源數(shù)據(jù)源7.2.1 ADO概述概述7.2.2 ADO對象的結構對象的結構7.3.1 Connection對象及其屬性對象及其屬性7.3.2 Connection對象的方法對象的方法7.

2、3.3 Connection對象應用舉例對象應用舉例7.4.1 Command對象及其屬性對象及其屬性 7.4.2 Command對象的方法對象的方法7.5.1 Recordset對象及其屬性對象及其屬性7.5.2 Recordset對象的常用方法對象的常用方法7.5.3 用用Recordset對象維護數(shù)據(jù)庫對象維護數(shù)據(jù)庫7.6.1 Recordset對象的集合對象的集合7.6.2 Recordset對象的使用對象的使用 通常每種數(shù)據(jù)庫都提供了自己的編程接口,通常每種數(shù)據(jù)庫都提供了自己的編程接口,Microsoft開發(fā)了一套用于開發(fā)數(shù)據(jù)庫系統(tǒng)應用程開發(fā)了一套用于開發(fā)數(shù)據(jù)庫系統(tǒng)應用程序的編程接口

3、規(guī)范(序的編程接口規(guī)范(API),即),即ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連),開放數(shù)據(jù)庫互連),ODBC是目前最流行的連接數(shù)據(jù)源的方法之一,是目前最流行的連接數(shù)據(jù)源的方法之一,它是數(shù)據(jù)庫服務器的一個標準協(xié)議,它向訪問網(wǎng)它是數(shù)據(jù)庫服務器的一個標準協(xié)議,它向訪問網(wǎng)絡數(shù)據(jù)庫的應用程序提供一種通用的語言。無論絡數(shù)據(jù)庫的應用程序提供一種通用的語言。無論對于本地數(shù)據(jù)庫還是對于本地數(shù)據(jù)庫還是C/S或或B/S數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫管理系統(tǒng),只要系統(tǒng)中有相應的只要系統(tǒng)中有相應的ODBC驅動程序,就可以通驅動程序,就可以通過過ODBC與之連接并訪問數(shù)據(jù)庫中的信息。與之

4、連接并訪問數(shù)據(jù)庫中的信息。 應用程序通過應用程序通過ODBC定義的接口與驅動程定義的接口與驅動程序管理器通信,驅動程序管理器選擇相應序管理器通信,驅動程序管理器選擇相應的驅動程序與指定的數(shù)據(jù)庫進行通信。只的驅動程序與指定的數(shù)據(jù)庫進行通信。只要系統(tǒng)中有相應的要系統(tǒng)中有相應的ODBC驅動程序,任何驅動程序,任何程序都可以過程序都可以過ODBC操縱驅動程序的數(shù)據(jù)操縱驅動程序的數(shù)據(jù)庫。庫。 要與要與ODBC兼容的數(shù)據(jù)庫進行連接,必須兼容的數(shù)據(jù)庫進行連接,必須建立一個稱為建立一個稱為Data Source Name(DSN,數(shù)據(jù)源名數(shù)據(jù)源名)的數(shù)據(jù)源,通過該的數(shù)據(jù)源,通過該DSN定位和標定位和標識指定的

5、識指定的ODBC兼容數(shù)據(jù)庫。兼容數(shù)據(jù)庫。 數(shù)據(jù)源包含了用戶安全性、數(shù)據(jù)庫定位和數(shù)據(jù)源包含了用戶安全性、數(shù)據(jù)庫定位和連接參數(shù)等與數(shù)據(jù)庫進行連接的信息。也連接參數(shù)等與數(shù)據(jù)庫進行連接的信息。也就是說,就是說,DSN是一個代表是一個代表ODBC連接的符連接的符號,它隱藏了諸如數(shù)據(jù)庫文件名、所在目號,它隱藏了諸如數(shù)據(jù)庫文件名、所在目錄、數(shù)據(jù)庫驅動程序、用戶錄、數(shù)據(jù)庫驅動程序、用戶ID、密碼等細、密碼等細節(jié)。所以,當建立連接時,不必考慮數(shù)據(jù)節(jié)。所以,當建立連接時,不必考慮數(shù)據(jù)庫文件名或位置,只要給出它在庫文件名或位置,只要給出它在ODBC中中的的DSN即可。即可。 DSN分為三種類型:用戶分為三種類型:用

6、戶DSN、系統(tǒng)、系統(tǒng)DSN和文件和文件DSN。 1User DSN(用戶(用戶DSN):只能以指定):只能以指定的用戶安全身份證明(用戶名和密碼)連的用戶安全身份證明(用戶名和密碼)連接到指定的數(shù)據(jù)庫。接到指定的數(shù)據(jù)庫。 2System DSN(系統(tǒng)(系統(tǒng)DSN):所有用戶):所有用戶都能夠連接到指定的數(shù)據(jù)庫。都能夠連接到指定的數(shù)據(jù)庫。 3File DSN (文件文件DSN):將連接的情況存:將連接的情況存儲在一個文件中,只有對該文件有訪問權儲在一個文件中,只有對該文件有訪問權限的用戶才能連接到指定的數(shù)據(jù)庫。限的用戶才能連接到指定的數(shù)據(jù)庫。 用戶和系統(tǒng)用戶和系統(tǒng)DSN信息存放在信息存放在Win

7、dows的注的注冊表中。冊表中。一、一、DSN包含信息包含信息 要通過要通過ODBC訪問數(shù)據(jù)庫,必須配置好訪問數(shù)據(jù)庫,必須配置好DSN。一。一個個DSN必須包含以下信息:必須包含以下信息: 1DSN的名字:應用程序訪問數(shù)據(jù)庫時,向系統(tǒng)的名字:應用程序訪問數(shù)據(jù)庫時,向系統(tǒng)傳遞的名字,不是實際的數(shù)據(jù)庫名。傳遞的名字,不是實際的數(shù)據(jù)庫名。 2ODBC驅動程序:在對數(shù)據(jù)庫進行操作時,系驅動程序:在對數(shù)據(jù)庫進行操作時,系統(tǒng)需要調(diào)用相應的統(tǒng)需要調(diào)用相應的ODBC驅動程序來提供服務。驅動程序來提供服務。 3要連接的數(shù)據(jù)庫或數(shù)據(jù)庫服務器的名稱:指定要連接的數(shù)據(jù)庫或數(shù)據(jù)庫服務器的名稱:指定連接的數(shù)據(jù)庫。使應用程

8、序知道通過連接的數(shù)據(jù)庫。使應用程序知道通過ODBC訪問訪問的是哪個數(shù)據(jù)庫或數(shù)據(jù)庫服務器的名稱。的是哪個數(shù)據(jù)庫或數(shù)據(jù)庫服務器的名稱。 二、創(chuàng)建和配置二、創(chuàng)建和配置ODBC數(shù)據(jù)源數(shù)據(jù)源 在在Windows NT/2000中,設定中,設定Web服務器使用的服務器使用的數(shù)據(jù)源名稱(數(shù)據(jù)源名稱(DSN)時,必須建系統(tǒng))時,必須建系統(tǒng)DSN,才能,才能確保所有的確保所有的Web用戶都可以使用該用戶都可以使用該DSN連接到指連接到指定得數(shù)據(jù)庫。定得數(shù)據(jù)庫。 下面以網(wǎng)上商店中所用的數(shù)據(jù)庫下面以網(wǎng)上商店中所用的數(shù)據(jù)庫NetShop為例,為例,建立建立ODBC數(shù)據(jù)源的步驟:數(shù)據(jù)源的步驟: 1單擊單擊“開始開始/設

9、置設置/控制面板控制面板”(或雙擊桌面上(或雙擊桌面上“我的電腦我的電腦”圖標,并雙擊隨之出現(xiàn)的圖標,并雙擊隨之出現(xiàn)的“控制面控制面板板”圖標),出現(xiàn)圖標),出現(xiàn)“管理工具管理工具”圖標。雙擊圖標。雙擊“管管理工具理工具”圖標,出現(xiàn)圖標,出現(xiàn)“管理工具管理工具”對話框。對話框。 2雙擊雙擊“數(shù)據(jù)源(數(shù)據(jù)源(ODBC)”圖標,出現(xiàn)圖標,出現(xiàn)圖圖7-1所示的所示的“ODBC數(shù)據(jù)源管理器數(shù)據(jù)源管理器”對話對話框。顯示框。顯示“用戶用戶DSN”選項卡、選項卡、“系統(tǒng)系統(tǒng)DSN”選項卡和選項卡和“文件文件DSN”選項卡,選擇選項卡,選擇“系統(tǒng)系統(tǒng)DSN”選項卡。在該窗口的選項卡。在該窗口的“系統(tǒng)數(shù)據(jù)源系

10、統(tǒng)數(shù)據(jù)源”列表中顯示該系統(tǒng)中已安裝的列表中顯示該系統(tǒng)中已安裝的ODBC數(shù)據(jù)數(shù)據(jù)源的名稱。當要建立的數(shù)據(jù)源不存在時,源的名稱。當要建立的數(shù)據(jù)源不存在時,則單擊則單擊“添加添加”按鈕添加需要的數(shù)據(jù)源。按鈕添加需要的數(shù)據(jù)源。存在,則用選中一個數(shù)據(jù)源后單擊存在,則用選中一個數(shù)據(jù)源后單擊“配置配置”按鈕,對該數(shù)據(jù)源進行重新設置。按鈕,對該數(shù)據(jù)源進行重新設置。 3單擊單擊“添加添加”按鈕,將出現(xiàn)如圖按鈕,將出現(xiàn)如圖7-2所示的所示的“創(chuàng)建新數(shù)據(jù)源創(chuàng)建新數(shù)據(jù)源”對話框。因為本書中要連接的對話框。因為本書中要連接的數(shù)據(jù)庫是由數(shù)據(jù)庫是由SQL Server創(chuàng)建的,故選擇列表框中創(chuàng)建的,故選擇列表框中的的“SQL

11、 Server”,然后單擊,然后單擊“完成完成”按鈕。出按鈕。出現(xiàn)圖現(xiàn)圖5-3所示的所示的“建立新的數(shù)據(jù)源到建立新的數(shù)據(jù)源到SQL Server”對話框第一頁。對話框第一頁。 4在圖在圖7-3中的中的“名稱名稱”一欄中為數(shù)據(jù)源設置一一欄中為數(shù)據(jù)源設置一個名稱(個名稱(DSN),輸入網(wǎng)上商店所使用的數(shù)據(jù)源),輸入網(wǎng)上商店所使用的數(shù)據(jù)源名稱為名稱為 NetShopsource;在;在“服務器服務器”下拉式下拉式列表框中選擇或者鍵入列表框中選擇或者鍵入SQL Server數(shù)據(jù)庫服務器數(shù)據(jù)庫服務器的名稱。但要注意:必須確保在本地或與之相連的名稱。但要注意:必須確保在本地或與之相連的網(wǎng)絡中存在著可以連接

12、的的網(wǎng)絡中存在著可以連接的SQL Server 服務器,服務器,才能建立才能建立SQL Server 數(shù)據(jù)源,否則,在其后的數(shù)據(jù)源,否則,在其后的連接中將出現(xiàn)錯誤。連接中將出現(xiàn)錯誤。 5單擊單擊“下一步下一步”按鈕,出現(xiàn)如圖按鈕,出現(xiàn)如圖7-4所示的所示的“建立新的數(shù)據(jù)源到建立新的數(shù)據(jù)源到SQLServer ”對話框第二頁。對話框第二頁。選擇登陸認證方式,選擇登陸認證方式,Windows NT或或SQL Server認證,輸入登陸名和密碼。認證,輸入登陸名和密碼。 6單擊單擊“下一步下一步”按鈕,如果連接成功,系統(tǒng)將按鈕,如果連接成功,系統(tǒng)將出現(xiàn)如圖出現(xiàn)如圖5-5所示的所示的“建立新的數(shù)據(jù)源到

13、建立新的數(shù)據(jù)源到SQL SERVER”對話框第三頁。在圖對話框第三頁。在圖7-5中,在中,在“更改更改默認的數(shù)據(jù)庫為默認的數(shù)據(jù)庫為”下拉式列表框中設置要連接的下拉式列表框中設置要連接的默認數(shù)據(jù)庫,并選擇適當?shù)哪J數(shù)據(jù)庫,并選擇適當?shù)腁NSI標識。如果標識。如果SQL數(shù)據(jù)庫連接失敗,系統(tǒng)將會給出相關出錯信息根數(shù)據(jù)庫連接失敗,系統(tǒng)將會給出相關出錯信息根據(jù)出錯的內(nèi)容,檢查據(jù)出錯的內(nèi)容,檢查SQL服務器是否存在或相關服務器是否存在或相關的設置是否正確。的設置是否正確。 7單擊單擊“下一步下一步”按鈕,出現(xiàn)如圖按鈕,出現(xiàn)如圖5-6所所示的示的“建立新的數(shù)據(jù)源到建立新的數(shù)據(jù)源到SQL SERVER”對話框

14、第四頁。在圖對話框第四頁。在圖7-6中設置消息的語言,中設置消息的語言,選擇一種字符轉換方式,設置好日志文件選擇一種字符轉換方式,設置好日志文件的存儲文件。在該對話框中一般采用系統(tǒng)的存儲文件。在該對話框中一般采用系統(tǒng)的默認設置即可。的默認設置即可。 8單擊單擊“完成完成”按鈕,出現(xiàn)如圖按鈕,出現(xiàn)如圖7-7所示所示的的“ODBC MICROSOFT SQL SERVER安安裝裝”對話框。在圖對話框。在圖7-7中給出了配置該中給出了配置該DSN所使用的參數(shù)。所使用的參數(shù)。 9單擊單擊“測試數(shù)據(jù)源測試數(shù)據(jù)源”按鈕,測試數(shù)據(jù)源按鈕,測試數(shù)據(jù)源連接是否正確。如果連接是否正確。如果DSN創(chuàng)建正確,則得創(chuàng)建

15、正確,則得到圖到圖5-8所示的所示的“SQL SERVER ODBC數(shù)數(shù)據(jù)源測試據(jù)源測試”的測試成功對話框。單擊的測試成功對話框。單擊“確確定定”按鈕關閉測試結果對話框,最后單擊按鈕關閉測試結果對話框,最后單擊“確定確定”按鈕,完成按鈕,完成SQL SERVER 數(shù)據(jù)源數(shù)據(jù)源的建立工作,系統(tǒng)返回圖的建立工作,系統(tǒng)返回圖7-1所示的所示的“ODBC數(shù)據(jù)源管理器數(shù)據(jù)源管理器”對話框,但對話框,但“系系統(tǒng)統(tǒng)DSN”的列表框中增加了一個名為的列表框中增加了一個名為“NetShopSource”的數(shù)據(jù)源。的數(shù)據(jù)源。 在靜態(tài)網(wǎng)頁中,訪問數(shù)據(jù)庫一般是通過公在靜態(tài)網(wǎng)頁中,訪問數(shù)據(jù)庫一般是通過公用網(wǎng)關接口用網(wǎng)關

16、接口(CGI)來實現(xiàn)的,但這種方法開來實現(xiàn)的,但這種方法開發(fā)困難,而且在出現(xiàn)較大并發(fā)請求時會顯發(fā)困難,而且在出現(xiàn)較大并發(fā)請求時會顯著降低服務器的運行效率。而在動態(tài)網(wǎng)頁著降低服務器的運行效率。而在動態(tài)網(wǎng)頁或動態(tài)站點中,采用或動態(tài)站點中,采用ASP內(nèi)嵌的內(nèi)嵌的database access組件就能較好的通過組件就能較好的通過ADO(ActiveX Data Objects)訪問存儲在服務器端的數(shù)據(jù)訪問存儲在服務器端的數(shù)據(jù)庫信息。庫信息。 在在ASP腳本中可以通過三種方式訪問數(shù)據(jù)庫:腳本中可以通過三種方式訪問數(shù)據(jù)庫: 1IDC(Internet Database Connector):它):它是傳統(tǒng)

17、的數(shù)據(jù)庫查詢工具,用來定義和執(zhí)行數(shù)據(jù)是傳統(tǒng)的數(shù)據(jù)庫查詢工具,用來定義和執(zhí)行數(shù)據(jù)庫查詢的庫查詢的SQL命令,并向瀏覽器返回一個指定數(shù)命令,并向瀏覽器返回一個指定數(shù)據(jù)格式的頁面。使用據(jù)格式的頁面。使用IDC訪問數(shù)據(jù)庫十分簡單,訪問數(shù)據(jù)庫十分簡單,幾乎不需要編程就能實現(xiàn)對數(shù)據(jù)庫的訪問。但幾乎不需要編程就能實現(xiàn)對數(shù)據(jù)庫的訪問。但IDC缺乏靈活性,它只是簡單的創(chuàng)建缺乏靈活性,它只是簡單的創(chuàng)建IDC文件文件(.idc)和)和HTML擴展文件(擴展文件(.htx)兩種文件,然)兩種文件,然后等待后等待IDC文件被請求,來完成數(shù)據(jù)庫的訪問與文件被請求,來完成數(shù)據(jù)庫的訪問與輸出任務。因此這種方式限制了對數(shù)據(jù)庫的

18、交互輸出任務。因此這種方式限制了對數(shù)據(jù)庫的交互控制,同時控制,同時IDC還缺少游標。還缺少游標。 2ADO(ActiveX Data Objects,ActiveX數(shù)據(jù)數(shù)據(jù)對象):對象):ADO是微軟提供的可對各種類型數(shù)據(jù)庫是微軟提供的可對各種類型數(shù)據(jù)庫進行操作的最簡單、最有效和功能最強大的方法,進行操作的最簡單、最有效和功能最強大的方法,它是一種功能強大的數(shù)據(jù)訪問編程接口,從而使它是一種功能強大的數(shù)據(jù)訪問編程接口,從而使得大部分數(shù)據(jù)源可編程的屬性得以直接擴展到你得大部分數(shù)據(jù)源可編程的屬性得以直接擴展到你的的Active Server頁面上。頁面上。ADO把大部分的數(shù)據(jù)把大部分的數(shù)據(jù)庫操作封裝

19、到庫操作封裝到7個對象中,在個對象中,在ASP頁面中編程調(diào)頁面中編程調(diào)用這些對象執(zhí)行相應的數(shù)據(jù)庫操作。用這些對象執(zhí)行相應的數(shù)據(jù)庫操作。ADO是是ASP技術的核心。技術的核心。 ADO不支持數(shù)據(jù)的遠程操作,不支持數(shù)據(jù)的遠程操作,ADO只能執(zhí)行查詢只能執(zhí)行查詢并返回數(shù)據(jù)庫的查詢結果,這種結果是并返回數(shù)據(jù)庫的查詢結果,這種結果是“靜態(tài)靜態(tài)的的”,即客戶端需要修改數(shù)據(jù)庫中的數(shù)據(jù),必須,即客戶端需要修改數(shù)據(jù)庫中的數(shù)據(jù),必須通過響應的通過響應的SQL語句提出修改數(shù)據(jù)請求,才能修語句提出修改數(shù)據(jù)請求,才能修改服務器端數(shù)據(jù)庫中的內(nèi)容。改服務器端數(shù)據(jù)庫中的內(nèi)容。 3RDS(Remote Data Server遠

20、程數(shù)據(jù)遠程數(shù)據(jù)服務):服務):RDS是是IIS4 .0中提出概念,它是中提出概念,它是由由ASP中原來的中原來的Advanced Data Connector(ADC)發(fā)展而來的,發(fā)展而來的,RDC與與ADO集成在一起,使用相同的編程模型,集成在一起,使用相同的編程模型,提供訪問遠程數(shù)據(jù)庫的功能。提供訪問遠程數(shù)據(jù)庫的功能。 RDS支持數(shù)據(jù)的遠程操作,能夠執(zhí)行查詢支持數(shù)據(jù)的遠程操作,能夠執(zhí)行查詢并返回數(shù)據(jù)庫的查詢結果,并且該結果是并返回數(shù)據(jù)庫的查詢結果,并且該結果是“動態(tài)的動態(tài)的”,即先把服務器端的數(shù)據(jù)搬到,即先把服務器端的數(shù)據(jù)搬到客戶端,在客戶端修改數(shù)據(jù)后,調(diào)用數(shù)據(jù)客戶端,在客戶端修改數(shù)據(jù)后,

21、調(diào)用數(shù)據(jù)庫的更新命令就可將客戶端修改的數(shù)據(jù)寫庫的更新命令就可將客戶端修改的數(shù)據(jù)寫回服務器端的數(shù)據(jù)庫中。由于回服務器端的數(shù)據(jù)庫中。由于RDC與與ADO是集成的,是集成的,RDS的低層是通過調(diào)用的低層是通過調(diào)用ADO來來完成的。完成的。RDS在的在的ADO基礎上通過綁定的基礎上通過綁定的數(shù)據(jù)顯示和操作控件。數(shù)據(jù)顯示和操作控件。 OLE DB(Object Linking & Embedding Database)和和ADO是是Microsoft公司為適應網(wǎng)絡迅公司為適應網(wǎng)絡迅速發(fā)展的需要而開發(fā)的最新數(shù)據(jù)訪問編程接口。速發(fā)展的需要而開發(fā)的最新數(shù)據(jù)訪問編程接口。Microsft公司已把公司已把

22、OLE DB 定位為定位為 ODBC(Ppen Database Connectivity)的繼承者。)的繼承者。ODBC是是基于基于SQL的,主要用于處理關系型數(shù)據(jù)庫,可以的,主要用于處理關系型數(shù)據(jù)庫,可以很好地用于關系型數(shù)據(jù)庫的訪問,但對于非關系很好地用于關系型數(shù)據(jù)庫的訪問,但對于非關系型數(shù)據(jù)庫就無能為力。而型數(shù)據(jù)庫就無能為力。而OLE DB作為一個最新作為一個最新的數(shù)據(jù)庫訪問接口,除提供對關系數(shù)據(jù)庫的訪問的數(shù)據(jù)庫訪問接口,除提供對關系數(shù)據(jù)庫的訪問之外,還可以訪問非關系型數(shù)據(jù)庫和其他的一些之外,還可以訪問非關系型數(shù)據(jù)庫和其他的一些資源,如象資源,如象excel電子表格中的數(shù)據(jù)庫、訪問電子電

23、子表格中的數(shù)據(jù)庫、訪問電子郵件等。郵件等。 ADO 是一個是一個OLE DB使用者,在使用者,在ASP中,中,可以使用可以使用ADO通過通過OLE DB的數(shù)據(jù)庫驅動的數(shù)據(jù)庫驅動程序直接訪問數(shù)據(jù)庫。也可以編寫腳本來程序直接訪問數(shù)據(jù)庫。也可以編寫腳本來連接到連接到ODBC兼容的數(shù)據(jù)庫,這樣兼容的數(shù)據(jù)庫,這樣ASP程程序員就可以訪問任何與序員就可以訪問任何與 ODBC兼容的數(shù)據(jù)兼容的數(shù)據(jù)庫,包括庫,包括SQL Server、oracle、access等。等。 在在ASP 中,如果不作說明,使用中,如果不作說明,使用ADO訪問訪問數(shù)據(jù)庫將默認為數(shù)據(jù)庫將默認為OLE DB的的ODBC驅動程序,驅動程序,

24、但也可以通過但也可以通過OLE DB的其他數(shù)據(jù)庫驅動程的其他數(shù)據(jù)庫驅動程序直接幫定到指定的數(shù)據(jù)庫。序直接幫定到指定的數(shù)據(jù)庫。 ADO對象通過對象通過OLE DB從對應的數(shù)據(jù)庫從對應的數(shù)據(jù)庫中取得所需要的數(shù)據(jù)中取得所需要的數(shù)據(jù)后,在服務器端生成后,在服務器端生成相應的相應的ASP網(wǎng)頁后,網(wǎng)頁后,通過通過Internet將用戶將用戶所需的網(wǎng)頁傳送到用所需的網(wǎng)頁傳送到用戶瀏覽器中顯示處理。戶瀏覽器中顯示處理。其流程如圖其流程如圖7-9所示。所示。 ADO由由Connection、Command、Recordset、Field、Property、Parameter、Error七個對象和七個對象和Pro

25、perties、 Parameters、 Fields、 Errors四個集合組四個集合組成。成。 一、一、ADO的七個對象的七個對象 1Connection對象(連接對象):是對象(連接對象):是ADO的首的首要對象,它建立要對象,它建立ASP與指定數(shù)據(jù)庫的連接,在數(shù)與指定數(shù)據(jù)庫的連接,在數(shù)據(jù)庫的任何操作之前都需要建立一個據(jù)庫的任何操作之前都需要建立一個Connection對象。對象。Connection對象是對象是ADO的基礎。的基礎。 2Command對象(命令對象):負責對數(shù)據(jù)庫對象(命令對象):負責對數(shù)據(jù)庫提供請求,即傳遞指定的提供請求,即傳遞指定的SQL命令。它定義對數(shù)命令。它定義

26、對數(shù)據(jù)源所執(zhí)行的命令,可以接受據(jù)源所執(zhí)行的命令,可以接受SQL命令、表的名命令、表的名稱和存儲過程的名稱。通過對稱和存儲過程的名稱。通過對SQL服務器的查詢服務器的查詢和存取及存儲過程的調(diào)用,和存取及存儲過程的調(diào)用,Command對象有強對象有強大的數(shù)據(jù)庫訪問能力,既可以完成對數(shù)據(jù)庫的插大的數(shù)據(jù)庫訪問能力,既可以完成對數(shù)據(jù)庫的插入、刪除和更新等無需返回結果的操作,也可使入、刪除和更新等無需返回結果的操作,也可使用用Select語句返回一個記錄集。語句返回一個記錄集。 3Recordset對象(數(shù)據(jù)集對象):用來管理對象(數(shù)據(jù)集對象):用來管理某個查詢返回的記錄集以及記錄集中的游標??赡硞€查詢返

27、回的記錄集以及記錄集中的游標??梢栽诜秋@式建立以在非顯式建立Command對象的情況下,直接對象的情況下,直接打開一個帶查詢的結果集?;蚴菍蜷_一個帶查詢的結果集。或是對應著Connection對象的查詢返回結果集。對象的查詢返回結果集。 4Field對象(屬性對象):指定對象(屬性對象):指定Recordset對對象的數(shù)據(jù)字段。每個象的數(shù)據(jù)字段。每個Field對象對應對象對應Recordset對對象中的一個列。通過該對象可以取得一個記錄集象中的一個列。通過該對象可以取得一個記錄集內(nèi)不同列的值。內(nèi)不同列的值。 5Property對象對象(屬性對象屬性對象):一個:一個ADO對象一對象一般包

28、含兩種類型的屬性:固有屬性和動態(tài)屬性。般包含兩種類型的屬性:固有屬性和動態(tài)屬性。固有屬性不作為固有屬性不作為Property對象出現(xiàn)在對象出現(xiàn)在Properties集合中,當創(chuàng)建集合中,當創(chuàng)建ADO對象后,這些屬性可立即使對象后,這些屬性可立即使用,如用,如 Recordset對象的對象的EOF和和BOF屬性。而動屬性。而動態(tài)屬性則由數(shù)據(jù)提供者定義,這些屬性包含在態(tài)屬性則由數(shù)據(jù)提供者定義,這些屬性包含在Properties集合中。集合中。 6Parameter對象對象(參數(shù)對象參數(shù)對象):代表:代表SQL存儲過程或有參數(shù)查詢中的一個參數(shù),用存儲過程或有參數(shù)查詢中的一個參數(shù),用來傳遞參數(shù)給指定的

29、來傳遞參數(shù)給指定的SQL查詢。查詢。 7Error對象對象(錯誤對象錯誤對象):負責記錄連接過:負責記錄連接過程中所發(fā)生的錯誤信息。每個錯誤出現(xiàn)時,程中所發(fā)生的錯誤信息。每個錯誤出現(xiàn)時,一個或多個一個或多個Error對象被放到對象被放到Connection對象的對象的Errors集合中。集合中。 二、二、ADO的四個集合的四個集合 1Properties集合:用來保存與集合:用來保存與Connection、Command、Recordset和和Field對象有關的各個對象有關的各個Property對象。對象。 2Parameters集合:包含了集合:包含了Command對對象的所有象的所有Pa

30、rameter對象。對象。 3Fields集合:該集合關聯(lián)著一個集合:該集合關聯(lián)著一個Recordset對象的所有列。記錄集中返回的對象的所有列。記錄集中返回的每一列在每一列在Fields集合中都有一個相關的集合中都有一個相關的Field對象。對象。 4Errors集合:包含響應單個失敗時產(chǎn)生集合:包含響應單個失敗時產(chǎn)生的所有的所有Errors對象。對象。三、三、ADO對象與數(shù)據(jù)集合之間的關系對象與數(shù)據(jù)集合之間的關系ADO的七個對象和四個數(shù)據(jù)集合之間的關系如圖的七個對象和四個數(shù)據(jù)集合之間的關系如圖7-10所示。所示。 從圖中可以清楚地了解對象與數(shù)據(jù)集合之間的關從圖中可以清楚地了解對象與數(shù)據(jù)集合

31、之間的關系。系。Connection對象與對象與Command對象可以通過對象可以通過Execute操作方法產(chǎn)生操作方法產(chǎn)生Recordset對象;對象;Recordset對象可以通過對象可以通過Fields數(shù)據(jù)集合取得數(shù)據(jù)集合取得Field對象的值;對象的值;Connection對象也可通過對象也可通過Error數(shù)據(jù)集合得到數(shù)據(jù)集合得到ADO操作錯誤出現(xiàn)的操作錯誤出現(xiàn)的Error對象;對象;Recordset對象與對象與Command對象可以通過對象可以通過ActiveXConnect屬性設置屬性設置connection對象;對象;Recordset對象可以通過對象可以通過Source屬性設

32、置屬性設置Command對象;對象;Command對象可以通過對象可以通過Parameter數(shù)據(jù)集合得到數(shù)據(jù)集合得到Parameter對象的值。對象的值。 當需要對服務器端的數(shù)據(jù)庫進行操作時當需要對服務器端的數(shù)據(jù)庫進行操作時,首先應與首先應與服務器端的數(shù)據(jù)庫建立連接。服務器端的數(shù)據(jù)庫建立連接。Connection對象負對象負責與數(shù)據(jù)庫實際的連接動作,其他的對象如責與數(shù)據(jù)庫實際的連接動作,其他的對象如Command、Recordset、Field、Property、Parameter、Error對象都必須依賴對象都必須依賴Connection對象的連接才能發(fā)揮作用。在對象的連接才能發(fā)揮作用。在A

33、DO所提供的七個所提供的七個對象中只有對象中只有Connection、Command、Recordset需要使用需要使用ASP所提供的所提供的Server對象的對象的CreateObject方法來建立。方法來建立。 一、創(chuàng)建一、創(chuàng)建Connection對象對象 在使用在使用Connection對象前,必須調(diào)用對象前,必須調(diào)用Server. CreateObject方法創(chuàng)建該對象。方法創(chuàng)建該對象。 格式:格式: 例如,例如, 二、二、Connection對象的屬性對象的屬性 通常在連接數(shù)據(jù)庫之前需要對通常在連接數(shù)據(jù)庫之前需要對Connection對象的對象的屬性進行必要的設置,以便對連接進行行配

34、置。屬性進行必要的設置,以便對連接進行行配置。 1Attributes屬性:用于定義屬性:用于定義Connection對象對象的事務處理方式,控制事務成功或失敗后的事務處理方式,控制事務成功或失敗后Connection對象向數(shù)據(jù)庫寫數(shù)據(jù)的方式。該屬性對象向數(shù)據(jù)庫寫數(shù)據(jù)的方式。該屬性設置為設置為AdXactCommitRetaining,即保留提交,即保留提交,也就是在成功調(diào)用也就是在成功調(diào)用CommitTrans方法,且數(shù)據(jù)被方法,且數(shù)據(jù)被寫入數(shù)據(jù)庫后,自動啟動一個新事務。該屬性設寫入數(shù)據(jù)庫后,自動啟動一個新事務。該屬性設置為置為AdXactCommitRetaining,即保留取消,即保留取

35、消,也就是在成功調(diào)用也就是在成功調(diào)用RollbackTrans方法,且事務方法,且事務被取消后,自動啟動一個新事務。如果想同時達被取消后,自動啟動一個新事務。如果想同時達到以上兩種效果,則可以將該屬性的值設置為到以上兩種效果,則可以將該屬性的值設置為AdXactCommitRetaining與與AdXactCommitRetaining之和。之和。 2CommandTimeOut屬性:用于設置屬性:用于設置Connection對象的對象的Execute方法執(zhí)行命令方法執(zhí)行命令時的最長等待時間。默認值為時的最長等待時間。默認值為30秒。如果秒。如果CommandTimeOut屬性設為屬性設為0,

36、系統(tǒng)會一,系統(tǒng)會一直等到運行結束為止。直等到運行結束為止。 格式:格式:connection. CommandTimeOut=秒數(shù)秒數(shù) 3ConnectionString屬性:用來設置與數(shù)據(jù)源屬性:用來設置與數(shù)據(jù)源進行連接的信息。包括參數(shù)有:進行連接的信息。包括參數(shù)有: (1)Provider:指定用于連接的數(shù)據(jù)提供者的。:指定用于連接的數(shù)據(jù)提供者的。Microsoft SQL Server使用的是使用的是SQLOLEDB.1。 (2)Data Source/DSN:指定需連接的數(shù)據(jù)源名:指定需連接的數(shù)據(jù)源名稱。稱。 (3)User ID / UID:指定打開這個連接的用戶:指定打開這個連接的

37、用戶ID(身份標識身份標識)。 (4)Password / PWD:指定連接到數(shù)據(jù)庫的用:指定連接到數(shù)據(jù)庫的用戶密碼。戶密碼。 (5)File Name:指定連接到的數(shù)據(jù)文件名。該:指定連接到的數(shù)據(jù)文件名。該屬性不能與屬性不能與Provider同時設置。同時設置。 (6)Initial Catalog:指定要連接的數(shù)據(jù)庫名稱。:指定要連接的數(shù)據(jù)庫名稱。與與Provider一起使用。一起使用。 (7)Driver:指定數(shù)據(jù)源驅動程序的名稱。:指定數(shù)據(jù)源驅動程序的名稱。Microsoft SQL Server使用使用SQL Server。 (8)Server:指定數(shù)據(jù)源服務器的名稱。:指定數(shù)據(jù)源服

38、務器的名稱。 (9)Database:指定要連接的數(shù)據(jù)庫的名稱。:指定要連接的數(shù)據(jù)庫的名稱。與與Driver、Server一起使用。一起使用。 每一個項目以每一個項目以“參數(shù)名參數(shù)名=值值”的形式存放在該屬性的形式存放在該屬性中,項目與項目之間使用中,項目與項目之間使用“;”號分隔。號分隔。 如,如,。ConnectionString屬性在連接之前可讀屬性在連接之前可讀寫,但建立連接后,后該屬性為只讀。寫,但建立連接后,后該屬性為只讀。 4ConnectionTimeOut屬性:用于設置屬性:用于設置Connection對象的對象的Open方法打開數(shù)據(jù)庫方法打開數(shù)據(jù)庫連接時的最長等待時間。單位

39、是秒,默認連接時的最長等待時間。單位是秒,默認值為值為15秒。如果希望沒有時間限制,則可秒。如果希望沒有時間限制,則可以將其設置為以將其設置為0。 格式:格式:connection. ConnectionTimeOut=秒數(shù)秒數(shù) 例如,下面的腳本設置例如,下面的腳本設置ConnectionTimeOut屬性值,在放棄連接屬性值,在放棄連接嘗試并發(fā)錯誤信息之前等待嘗試并發(fā)錯誤信息之前等待30秒:秒: 5DefaultDatabase屬性:設置屬性:設置Connection對象連接時默認的數(shù)據(jù)庫。如對象連接時默認的數(shù)據(jù)庫。如果存在默認數(shù)據(jù)庫,果存在默認數(shù)據(jù)庫,SQL查詢字串中不需查詢字串中不需再指

40、定所操作的數(shù)據(jù)庫,再指定所操作的數(shù)據(jù)庫,ADO對象自動使對象自動使用本屬性所設置的數(shù)據(jù)庫。當需要訪問其用本屬性所設置的數(shù)據(jù)庫。當需要訪問其他數(shù)據(jù)庫時,可以將他數(shù)據(jù)庫時,可以將DefaultDatabase屬性屬性設置為該數(shù)據(jù)庫的名稱,或直接在設置為該數(shù)據(jù)庫的名稱,或直接在SQL查查詢命令中指定數(shù)據(jù)庫,如詢命令中指定數(shù)據(jù)庫,如Select * from數(shù)數(shù)據(jù)庫名據(jù)庫名.表名。表名。 格式:格式:connection. DefaultDatabase=數(shù)數(shù)據(jù)庫名據(jù)庫名 6Mode屬性:用來設置或返回屬性:用來設置或返回Connection對象連接的權限,它的取值如表對象連接的權限,它的取值如表7-

41、1所示。所示。 格式:格式:connection. Mode=modevalue 如,如,設置只讀的連接。設置只讀的連接。屬性值屬性值說明說明AdModeUnknown默認值。表明權限尚未設置或無法確定默認值。表明權限尚未設置或無法確定AdModeRead表明權限為只讀表明權限為只讀AdModeWrite表明權限為只寫表明權限為只寫AdModeReadWrite表明權限為讀表明權限為讀/寫寫AdModeShareDenyRead防止其他用戶使用讀權限打開連接防止其他用戶使用讀權限打開連接AdModeShareDenyWrite防止其他用戶使用寫權限打開連接防止其他用戶使用寫權限打開連接AdMo

42、deShareExclusive防止其他用戶打開連接防止其他用戶打開連接AdModeShareDenyDone防止其他用戶使用任何權限打開連接防止其他用戶使用任何權限打開連接 7Provider屬性:用來設置或返回屬性:用來設置或返回Connection對象的數(shù)據(jù)提供者名稱。該屬對象的數(shù)據(jù)提供者名稱。該屬性值由性值由ConnectionString屬性或屬性或Open方方法的法的ConnectionString參數(shù)的內(nèi)容確定。參數(shù)的內(nèi)容確定。如沒有設置該屬性如沒有設置該屬性,則該屬性將設置為則該屬性將設置為MSDASQL.1表示使用表示使用Microsoft OLE DB Provider f

43、or ODBC連接。連接。 如如% Response.Write The Provider is & con.Provider & %,輸出,輸出Connection對象的數(shù)據(jù)提供者名稱。對象的數(shù)據(jù)提供者名稱。 1打開與數(shù)據(jù)庫的連接打開與數(shù)據(jù)庫的連接 通常創(chuàng)建通常創(chuàng)建Connection對象后,就可以調(diào)用對象后,就可以調(diào)用Connection對象對象的的Open方法來建立與數(shù)據(jù)源的連接,只有與數(shù)據(jù)源建立了成方法來建立與數(shù)據(jù)源的連接,只有與數(shù)據(jù)源建立了成功的連接,功的連接,Connection對象才會存在,才可以通過命令對數(shù)對象才會存在,才可以通過命令對數(shù)據(jù)源進行必要的操作。據(jù)源

44、進行必要的操作。 Open方法有以下四種使用方法方法有以下四種使用方法: (1)直接將連接字串傳給)直接將連接字串傳給Open方法。方法。 (2)利用)利用Connection對象的對象的ConnectionString屬性。屬性。 (3)直接連接數(shù)據(jù)庫。前兩種連接方法必須先用)直接連接數(shù)據(jù)庫。前兩種連接方法必須先用ODBC數(shù)據(jù)數(shù)據(jù)源管理器來建立一個源管理器來建立一個DSN,如果不想建立,如果不想建立DSN也可以使用也可以使用ASP提供的直接在腳本中指定連接數(shù)據(jù)庫的方法:提供的直接在腳本中指定連接數(shù)據(jù)庫的方法: (4)使用)使用ODBC連接字符串。連接字符串。 2通過打開的連接執(zhí)行通過打開的連

45、接執(zhí)行SQL語句語句 在創(chuàng)建在創(chuàng)建Connection對象并將它和一個數(shù)據(jù)庫成功對象并將它和一個數(shù)據(jù)庫成功地建立連接后,用戶可以通過連接對象的地建立連接后,用戶可以通過連接對象的Execute方法執(zhí)行方法執(zhí)行SQL語句或存儲過程來直接與語句或存儲過程來直接與數(shù)據(jù)庫對話,完成對數(shù)據(jù)庫的插入、更新和刪除數(shù)據(jù)庫對話,完成對數(shù)據(jù)庫的插入、更新和刪除數(shù)據(jù)操作,這些操作不返回游標。但當利用數(shù)據(jù)操作,這些操作不返回游標。但當利用Connection對象查詢時返回游標,但只能得到一對象查詢時返回游標,但只能得到一個向前讀取的游標(只能讀且只能向前的游標)。個向前讀取的游標(只能讀且只能向前的游標)。 格式格式

46、1返回游標集:返回游標集: Set CurRecordSet= Connection.Execute (CommandText,RecordAffected, Options) 格式格式2不返回游標集:不返回游標集:Connection.Execute (CommandText,RecordAffected, Options) 說明:說明: CurRecordSet:用來存放返回數(shù)據(jù)集的游標名字,是一:用來存放返回數(shù)據(jù)集的游標名字,是一個可選項。個可選項。 CommandText:是包含表名、:是包含表名、SQL語句或存儲過程名稱語句或存儲過程名稱等的一個字符串。等的一個字符串。 Record

47、Affected:是一個可選的變量參數(shù),表示當對數(shù):是一個可選的變量參數(shù),表示當對數(shù)據(jù)庫提出要求時所返回或影響的記錄數(shù)。例如,若想知道據(jù)庫提出要求時所返回或影響的記錄數(shù)。例如,若想知道在執(zhí)行一個在執(zhí)行一個SQL語句時到底刪除了多少條記錄,只需把一語句時到底刪除了多少條記錄,只需把一個變量傳給個變量傳給RecordAffected參數(shù),執(zhí)行完該方法后,通參數(shù),執(zhí)行完該方法后,通過檢查該變量的值便可知道共刪除了幾個記錄。過檢查該變量的值便可知道共刪除了幾個記錄。 Options:是一個可選參數(shù),用來指定:是一個可選參數(shù),用來指定CommandText參參數(shù)的性質。它的取值如表數(shù)的性質。它的取值如表

48、7-2所示。所示。屬性值屬性值說明說明AdCmdText表明被執(zhí)行的字符串是一個命令文本表明被執(zhí)行的字符串是一個命令文本AdCmdTable表明被執(zhí)行的字符串是一個表名字表明被執(zhí)行的字符串是一個表名字AdCmdstoredProc表明被執(zhí)行的字符串是一個存儲過程表明被執(zhí)行的字符串是一個存儲過程AdCmdUnknown表明被執(zhí)行的字符串是未知類型(默認)表明被執(zhí)行的字符串是未知類型(默認)例如,例如,set rs =con.execute(select * from regist_info)將將表表regist_info中的記錄集傳給只能讀且只能讀且只能中的記錄集傳給只能讀且只能讀且只能向前的游

49、標向前的游標rs。 3關閉連接關閉連接 當與數(shù)據(jù)源的連接完成任務后,應調(diào)用當與數(shù)據(jù)源的連接完成任務后,應調(diào)用Close方方法來關閉與數(shù)據(jù)源的連接,以便釋放與該連接有法來關閉與數(shù)據(jù)源的連接,以便釋放與該連接有關的系統(tǒng)資源。關的系統(tǒng)資源。 但注意,調(diào)用但注意,調(diào)用Close方法只是釋放與該連接有關方法只是釋放與該連接有關的系統(tǒng)資源,而該連接對象本身并沒有釋放。因的系統(tǒng)資源,而該連接對象本身并沒有釋放。因此一個關閉的連接對象可以繼續(xù)使用此一個關閉的連接對象可以繼續(xù)使用Open方法打方法打開連接,而不再需要重新創(chuàng)建一個連接對象。開連接,而不再需要重新創(chuàng)建一個連接對象。 使用使用Close方法關閉與數(shù)據(jù)

50、源的連接后,若要釋方法關閉與數(shù)據(jù)源的連接后,若要釋放連接對象本身,可給已創(chuàng)建的連接對象賦放連接對象本身,可給已創(chuàng)建的連接對象賦Nothing,將連接對象徹底從內(nèi)存中清除。,將連接對象徹底從內(nèi)存中清除。 格式:關閉:連接對象格式:關閉:連接對象.close 釋放:釋放:set 連接對象連接對象=Nothing 例如,例如,set con=Nothing Command對象用來指定對數(shù)據(jù)源執(zhí)行的命對象用來指定對數(shù)據(jù)源執(zhí)行的命令,這些命令可以是令,這些命令可以是SQL語句、表或存儲語句、表或存儲過程。過程。 一、一、Command對象的創(chuàng)建對象的創(chuàng)建 Command對象即可以利用已經(jīng)創(chuàng)建的對象即可以

51、利用已經(jīng)創(chuàng)建的Connection對象來創(chuàng)建,也可以不用先創(chuàng)建對象來創(chuàng)建,也可以不用先創(chuàng)建Connection對象就直接使用對象就直接使用Command對象,這對象,這時只需設置時只需設置Command對象的對象的ActiveConnection屬性為一個連接字串即可,這時屬性為一個連接字串即可,這時ADO將自動創(chuàng)建將自動創(chuàng)建一個隱含的一個隱含的Connection對象,但不會分配一個對對象,但不會分配一個對象變量給它,因此如果多個象變量給它,因此如果多個Command對象要使用對象要使用相同的連接,則應明確的創(chuàng)建并打開一個相同的連接,則應明確的創(chuàng)建并打開一個Connection對象,這應可將

52、連接對象賦給該變量。對象,這應可將連接對象賦給該變量。 創(chuàng)建創(chuàng)建Command對象之前,必須先使用對象之前,必須先使用Server .CreateObject方法創(chuàng)建該對象。方法創(chuàng)建該對象。 格式:格式: 1利用已經(jīng)創(chuàng)建的利用已經(jīng)創(chuàng)建的Connection對象來創(chuàng)建對象來創(chuàng)建Command對象對象 2不用先創(chuàng)建不用先創(chuàng)建Connection對象直接使用對象直接使用Command對象對象 二、二、Command對象的屬性對象的屬性 通常在使用通常在使用Command對象之前需要對對象之前需要對Command對象的屬性進行必要的設置,以對象的屬性進行必要的設置,以便對該對象進行響應操作。便對該對象

53、進行響應操作。 1ActiveConnection屬性:用來設置或返回屬性:用來設置或返回Command對象所使用的對象所使用的Connection對象,可以對象,可以將將ActiveConnection屬性設置為一個已經(jīng)存在的屬性設置為一個已經(jīng)存在的Connection對象,也可以是一個包含對象,也可以是一個包含“數(shù)據(jù)庫連數(shù)據(jù)庫連接信息(接信息(ConnectionString)”的字符串參數(shù)。的字符串參數(shù)。 注意:在執(zhí)行注意:在執(zhí)行Command對象的命令之前,必須對象的命令之前,必須先設置先設置ActiveConnection屬性,否則將發(fā)生錯誤。屬性,否則將發(fā)生錯誤。 格式:命令對象名

54、格式:命令對象名.ActiveConnection=value 例,設置一個已經(jīng)存在并打開的例,設置一個已經(jīng)存在并打開的Connection對對象:象: 使用連接字串:使用連接字串: 2CommandText屬性:將屬性:將command對對象與象與connection對象關聯(lián)后,可以使用對象關聯(lián)后,可以使用CommandText屬性設置為能夠完成某個特屬性設置為能夠完成某個特定功能的定功能的SQL語句或表和存儲過程,并在語句或表和存儲過程,并在執(zhí)行執(zhí)行Command對象的對象的Execute方法來執(zhí)行方法來執(zhí)行由由commandText屬性值所指定的操作。屬性值所指定的操作。 格式:命令對象

55、名格式:命令對象名.commandtext= 命令命令 例如,例如, 3CommandType屬性:用來指定屬性:用來指定Command對象的類型,在使用中對象的類型,在使用中可根據(jù)實際情況設置或讀寫可根據(jù)實際情況設置或讀寫Command對象的類型。常用的取值如表對象的類型。常用的取值如表7-3所示。所示。 格式:命令對象名格式:命令對象名. CommandType=值值 設置該屬性可優(yōu)化設置該屬性可優(yōu)化commandtext屬性的計算。如果該屬性值沒有設置,屬性的計算。如果該屬性值沒有設置,則則ADO因不知因不知commandtext屬性值是屬性值是SQL語句、表還是存儲過程,語句、表還是存

56、儲過程,需要花費時間去識別,這樣影響了系統(tǒng)的執(zhí)行速度。需要花費時間去識別,這樣影響了系統(tǒng)的執(zhí)行速度。屬性值屬性值說明說明AdCmdText表明表明CommandText是一個是一個SQL串串AdCmdTable表明表明CommandText是一個表是一個表AdCmdstoredProc表明表明CommandText是一個存儲過程是一個存儲過程AdCmdUnknown表明表明CommandText的命令類型是未知的命令類型是未知(默認)(默認) 4commandtimeout屬性:用來設置屬性:用來設置command對象的對象的Execute方法的最長執(zhí)行時間,默認方法的最長執(zhí)行時間,默認30秒

57、。秒。與與Connection對象的對象的commandtimeout屬性一屬性一樣。樣。 格式:命令對象名格式:命令對象名. Commandtimeout=秒數(shù)秒數(shù) 5Prepared屬性:用來設置執(zhí)行前是否保存命屬性:用來設置執(zhí)行前是否保存命令的編譯版本。使用令的編譯版本。使用Prepared屬性,可使服務器屬性,可使服務器在首次執(zhí)行在首次執(zhí)行commandText屬性中指定查詢的結屬性中指定查詢的結果編譯并保存下來。這樣會降低首次執(zhí)行的速度,果編譯并保存下來。這樣會降低首次執(zhí)行的速度,但在后續(xù)命令的執(zhí)行過程中,服務器將直接使用但在后續(xù)命令的執(zhí)行過程中,服務器將直接使用已編譯好的命令版本,

58、從而提高執(zhí)行性能。如該已編譯好的命令版本,從而提高執(zhí)行性能。如該屬性設置為屬性設置為False,則將直接執(zhí)行,則將直接執(zhí)行command 對象對象而不創(chuàng)建編譯版本。而不創(chuàng)建編譯版本。 格式:命令對象名格式:命令對象名. Prepared=布爾類型值布爾類型值 1Createparameter方法:用來創(chuàng)建一個新的方法:用來創(chuàng)建一個新的Parameter對象,并在執(zhí)行之前加到對象,并在執(zhí)行之前加到command 對象的對象的parameters集合中。返回值為創(chuàng)建的集合中。返回值為創(chuàng)建的Parameter對象。對象。 Parameter對象表示傳遞給對象表示傳遞給SQL語句或存儲過程的一個或多個

59、參數(shù)。語句或存儲過程的一個或多個參數(shù)。 格式:格式: Set Parameter對象名對象名=command對象名對象名. CreateParameter(Name,Type,Direction,Size,Value) 說明:說明: Name:用來指定:用來指定Parameter對象的名稱,是一個字符串。對象的名稱,是一個字符串。 Type:用來指定:用來指定Patameter對象的數(shù)據(jù)類型,是一個長整型值。對象的數(shù)據(jù)類型,是一個長整型值。 Direction:用來指定:用來指定Parameter對象的傳遞方向,是一個長整型值。其取對象的傳遞方向,是一個長整型值。其取值見表值見表7-4。 Si

60、ze:用來指定:用來指定Parameter對象的最大長度,是一個長整型值。對象的最大長度,是一個長整型值。 Value:用來指定:用來指定Parameter對象值,是一個變體型值。對象值,是一個變體型值。常量名常量名常量值常量值說明說明adparamInput1 默認值,指定參數(shù)是輸入值默認值,指定參數(shù)是輸入值adParamoutput2指定參數(shù)是輸出值指定參數(shù)是輸出值adParamInputoutput3指定參數(shù)既是輸入值又是輸指定參數(shù)既是輸入值又是輸出值出值adParamReturnValue4指定參數(shù)為返回值指定參數(shù)為返回值 2Execute方法:用來執(zhí)行由方法:用來執(zhí)行由CommandText屬性值所指定的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論