此頁沒有內(nèi)容條目
內(nèi)容

以下元素是 ADO 編程模型中的關(guān)鍵部分:

?連接

 

?命令

 

?參數(shù)

 

?記錄集

 

?字段

 

?錯誤

 

?屬性

 

?集合

 

?事件

連接

通過“連接”可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。通過如 Microsoft? Internet Information Server 作為媒介,應(yīng)用程序可直接(有時稱為雙層系統(tǒng))或間接(有時稱為三層系統(tǒng))訪問數(shù)據(jù)源。

對象模型使用 Connection 對象使連接概念得以具體化。

“事務(wù)”用于界定在連接過程中發(fā)生的一系列數(shù)據(jù)訪問操作的開始和結(jié)束。ADO 可明確事務(wù)中的操作造成的對數(shù)據(jù)源的更改或者成功發(fā)生,或者根本沒有發(fā)生。

如果取消事務(wù)或它的一個操作失敗,則最終的結(jié)果將仿佛是事務(wù)中的操作均未發(fā)生,數(shù)據(jù)源將會保持事務(wù)開始以前的狀態(tài)。

對象模型無法清楚地體現(xiàn)出事務(wù)的概念,而是用一組 Connection 對象方法來表示。

ADO 訪問來自 OLE DB 提供者的數(shù)據(jù)和服務(wù)。Connection 對象用于指定專門的提供者和任意參數(shù)。例如,可對遠(yuǎn)程數(shù)據(jù)服務(wù) (RDS) 進(jìn)行顯式調(diào)用,或通過“Microsoft OLE DB Remoting Provider”進(jìn)行隱式調(diào)用。(請參閱 RDS 教程通過“MS Remote Provider”調(diào)用 RDS 第二步的范例)

命令

通過已建立的連接發(fā)出的“命令”可以某種方式來操作數(shù)據(jù)源。一般情況下,命令可以在數(shù)據(jù)源中添加、刪除或更新數(shù)據(jù),或者在表中以行的格式檢索數(shù)據(jù)。

對象模型用 Command 對象來體現(xiàn)命令概念。Command 對象使 ADO 能夠優(yōu)化對命令的執(zhí)行。

參數(shù)

通常,命令需要的變量部分即“參數(shù)”可以在命令發(fā)布之前進(jìn)行更改。例如,可重復(fù)發(fā)出相同的數(shù)據(jù)檢索命令,但每一次均可更改指定的檢索信息。

參數(shù)對執(zhí)行其行為類似函數(shù)的命令非常有用,這樣就可知道命令是做什么的,但不必知道它如何工作。例如,可發(fā)出一項銀行過戶命令,從一方借出貸給另一方??蓪⒁^戶的款額設(shè)置為參數(shù)。

對象模型用 Parameter 對象來體現(xiàn)參數(shù)概念。

記錄集

如果命令是在表中按信息行返回數(shù)據(jù)的查詢(行返回查詢),則這些行將會存儲在本地。

對象模型將該存儲體現(xiàn)為 Recordset 對象。但是,不存在僅代表單獨一個 Recordset 行的對象。

記錄集是在行中檢查和修改數(shù)據(jù)最主要的方法。Recordset 對象用于:

?指定可以檢查的行。

 

?移動行。

 

?指定移動行的順序。

 

?添加、更改或刪除行。

 

?通過更改行更新數(shù)據(jù)源。

 

?管理 Recordset 的總體狀態(tài)。

字段

一個記錄集行包含一個或多個“字段”。如果將記錄集看作二維網(wǎng)格,字段將排列構(gòu)成“列”。每一字段(列)都分別包含有名稱、數(shù)據(jù)類型和值的屬性,正是在該值中包含了來自數(shù)據(jù)源的真實數(shù)據(jù)。

對象模型以 Field 對象體現(xiàn)字段。

要修改數(shù)據(jù)源中的數(shù)據(jù),可在記錄集行中修改 Field 對象的值,對記錄集的更改最終被傳送給數(shù)據(jù)源。作為選項,Connection 對象的事務(wù)管理方法能夠可靠地保證更改要么全部成功,要么全部失敗。

錯誤

錯誤隨時可在應(yīng)用程序中發(fā)生,通常是由于無法建立連接、執(zhí)行命令或?qū)δ承顟B(tài)(例如,試圖使用沒有初始化的記錄集)的對象進(jìn)行操作。

對象模型以 Error 對象體現(xiàn)錯誤。

任意給定的錯誤都會產(chǎn)生一個或多個 Error 對象,隨后產(chǎn)生的錯誤將會放棄先前的 Error 對象組。

屬性

每個 ADO 對象都有一組唯一的“屬性”來描述或控制對象的行為。

屬性有兩種類型:內(nèi)置動態(tài)。內(nèi)置屬性是 ADO 對象的一部分并且隨時可用。動態(tài)屬性則由特別的數(shù)據(jù)提供者添加到 ADO 對象的屬性集合中,僅在提供者被使用時才能存在。

對象模型以 Property 對象體現(xiàn)屬性。

集合

ADO 提供“集合”,這是一種可方便地包含其他特殊類型對象的對象類型。使用集合方法可按名稱(文本字符串)或序號(整型數(shù))對集合中的對象進(jìn)行檢索。

ADO 提供四種類型的集合:

?Connection 對象具有 Errors 集合,包含為響應(yīng)與數(shù)據(jù)源有關(guān)的單一錯誤而創(chuàng)建的所有 Error 對象。

 

?Command 對象具有 Parameters 集合,包含應(yīng)用于 Command 對象的所有 Parameter 對象。

 

?Recordset 對象具有 Fields 集合,包含所有定義 Recordset 對象列的 Field 對象。

 

?另外,Connection、CommandRecordsetField 對象都具有 Properties 集合。它包含所有屬于各個包含對象的 Property 對象。

ADO 對象擁有可在其上使用的諸如“整型”、“字符型”或“布爾型”這樣的普通數(shù)據(jù)類型來設(shè)置或檢索值的屬性。然而,有必要將某些屬性看成是數(shù)據(jù)類型“COLLECTION OBJECT”的返回值。相應(yīng)的,集合對象具有存儲和檢索適合該集合的其他對象的方法。

例如,可認(rèn)為 Recordset 對象具有能夠返回集合對象的 Properties 屬性。該集合對象具有存儲和檢索描述 Recordset 性質(zhì)的 Property 對象的方法。

事件

“事件”是對將要發(fā)生或已經(jīng)發(fā)生的某些操作的通知。一般情況下,可用事件高效地編寫包含幾個異步任務(wù)的應(yīng)用程序。

對象模型無法顯式體現(xiàn)事件,只能在調(diào)用事件處理程序例程時表現(xiàn)出來。

在操作開始之前調(diào)用的事件處理程序便于對操作參數(shù)進(jìn)行檢查或修改,然后取消或允許操作完成。

操作完成后調(diào)用的事件處理程序在異步操作完成后進(jìn)行通知。多個操作經(jīng)過增強(qiáng)可以有選擇地異步執(zhí)行。例如,用于啟動異步 Recordset.Open 操作的應(yīng)用程序?qū)⒃诓僮鹘Y(jié)束時得到執(zhí)行完成事件的通知。

?有關(guān)事件的詳細(xì)信息,請參閱 ADO 事件模型和異步操作。

下一頁   使用對象的 ADO 編程模型