楊 艷
摘要:DAO、RDO和ADO分別代表了數據訪問技術的不同發(fā)展階段,本文對VB中最常用的三種數據訪問接口的體系結構進行了介紹,最后對這三種接口的技術進行了集中總結和比較。
關鍵詞:DAO RDO ADO 數據訪問
0 引言
數據庫實質上是一個龐大的、不同類型的數據集合。早期的數據庫系統(tǒng)不提供對外接口,僅可有特定軟件訪問數據,隨著計算機技術的發(fā)展和應用水平的提高,數據庫系統(tǒng)逐漸發(fā)展、完善對外接口,成為標準的應用支持平臺。程序員再也不必自己編寫數據管理程序,只需使用標準接口連接數據庫即可獲得數據庫系統(tǒng)的全部功能。而訪問數據庫是現代應用程序必備的基本功能之一,無論是數據庫管理系統(tǒng),還是多媒體應用系統(tǒng),都需要強大的數據庫支持。VB為程序員提供了多種訪問數據庫的手段,包括數據控件、DAO、RDO及ADO等。本文簡單介紹DAO、RAO、ADO的體系結構,并對三者進行簡單總結和比較。
1 DAO
1.1 DAO概念 數據訪問對象DAO(Data Access Objects)出自VB6.0提供的一個對象庫,為處理數據提供了完整、靈活的支持。DAO模型是設計關系數據庫系統(tǒng)結構的對象類的集合。它們提供了管理關系型數據庫系統(tǒng)所需的全部操作的屬性和方法,其中包括創(chuàng)建數據庫,定義表、字段和索引,建立表間的關系,定位和查詢數據庫等。在程序中使用它可以訪問Access、FoxPro、dBase等數據庫,某些條件下也可以訪問ODBC數據庫。
1.2 DAO層次結構 DAO模型的體系結構如圖1所示。DAO的結構嚴謹而豐富,正是這樣的結構,提供了足夠豐富的訪問數據庫的方法。DAO是完全的面向對象的,它將數據的值作為屬性,數據的查詢作為方法,數據值的變化作為事件。
1.3 使用DAO 使用DAO的步驟為:①創(chuàng)建工作區(qū);②打開數據庫;③創(chuàng)建記錄集;④使用記錄集訪問數據庫;⑤關閉DAO。
2 RDO
2.1 RDO概念 遠程數據對象RDO(Remote Data Objects)是位于ODBC API和驅動程序管理器之上的對象模型,它提供一系列的對象來滿足遠程數據訪問的特殊要求。盡管RDO在訪問Jet數據庫時受到限制,只能通過現存的ODBC驅動程序來訪問關系數據庫,但它能訪問任意的ODBC數據源,特別適用于智能的數據庫服務器(如SQL Server和Oracle等)。RDO具有短小快速的特性。
2.2 RDO層次結構 要正確地使用RDO,必須深入理解RDO對象模型。RDO對象和集合提供了使用代碼創(chuàng)建并控制遠程ODBC數據庫系統(tǒng)部件的框架。對象和集合的屬性描述了數據庫部件的特征,也描述了用來操縱它們的方法。RDO對象模型的體系結構如圖2所示。
2.3 使用RDO 使用RDO連接數據庫的過程如下:①創(chuàng)建RDO環(huán)境;②連接數據庫;③打開結果集;④操作結果集;⑤關閉數據庫。
3 ADO
3.1 ADO概念 活動數據對象ADO(ActiveX Data Object)是Microsoft新的數據訪問技術。該技術可屏蔽遠程數據訪問的復雜性而高效、快速的訪問多種數據庫,是基于OLE DB之上的更簡單、更高級、更適合Visual Basic程序員,它封裝并實際上實現了OLE DB的所有功能,同時消除了OLE DB的多種弊端。
3.2 ADO對象模型 ADO模型包含一組對象,用于訪問數據庫。ADO對象模型體系結構如圖3所示。
3.3 使用ADO ADO最基本的操作流程是:①初始化COM庫,引入ADO庫定義文件;②用Connection對象連接數據庫;③利用建立好的連接,通過Connection、Command對象執(zhí)行命令,或是利用Recordset對象取得結果記錄集進行處理;④使用完后關閉連接釋放對象。
4 DAO、RDO、ADO的比較
DAO是Jet引擎的面向對象的編程接口,用于訪問Jet或ISAM數據庫,并允許VB開發(fā)者直接連接到Access數據表。因此,DAO技術在訪問MDB文件格式的數據庫時有優(yōu)勢。但如果開發(fā)者想使用DAO與Oracle或SQL Server這樣的非MDB 文件格式的數據庫服務器進行通信,則對數據庫的所有調用和數據輸出都必須經過Access/Jet數據庫引擎,這對于使用數據庫服務器的應用程序來說是一個嚴重的瓶頸。因此適用于單系統(tǒng)應用程序或小范圍本地分布使用。
RDO是是一個到ODBC的、面向對象的數據訪問接口,是從DAO派生來的,適用于大型的客戶、服務器數據庫。它兼具 DAO和ODBC API二者的優(yōu)點:一方面,它較DAO層次結構簡單,便于對象的創(chuàng)建和處理;另一方面,它表露了ODBC的底層結構,提供環(huán)境、連接和語句句柄。此外,RDO還提供了用來訪問存儲過程和復雜結果的更多、更復雜的對象、屬性和方法,因此,盡管它只能通過現存的ODBC驅動程序訪問關系數據庫,并在訪問Jet或ISAM數據庫方面受到某些限制, 但它在許多大型關系數據庫應用程序開發(fā)的仍被證明是一種比較好的選擇。
ADO是一種新的數據庫訪問技術,是特別為客戶/服務器應用程序開發(fā)而設計的。ADO是DAO和RDO的后繼產物,比DAO和RDO更簡單、更加靈活。ADO在功能上與RDO更相似,而且它們之間有一種相似的映射關系。ADO擴展了DAO和RDO所使用的對象模型,它包含較少的對象,更多的屬性、方法和事件。
RDO使用行和列的概念,而DAO使用記錄和字段的概念。RDO的查詢結果以結果集的形式返回數據,結果集可以包括零個或多個數據行,每行又可以包括一個或多個列。DAO需要使用游標訪問數據,而RDO允許創(chuàng)建無游標的結果集,所需的資源大大少于游標。DAO支持數據庫模式的創(chuàng)建、修改、參照完整性和安全性,而RDO不支持任何形式的參照完整性、安全性或模式修改。DAO對象模型主要用于Jet引擎,RDO對象模型主要用于ODBC數據訪問,而ADO對象模型主要用于OLE DB。Jet和ODBC主要是針對數據庫訪問,而OLE DB對許多不同的數據源提供多機種環(huán)境的數據訪問。Microsoft公司已將 ADO作為數據存取API的未來選擇;VBScript以使用ADO,這使它很適合服務器/數據庫的整合。因此,ADO是客戶/服務器和基于Web的應用程序開發(fā)的首選。隨著數據庫訪問技術的不斷發(fā)展,ADO將成為數據庫訪問技術的主流。
參考文獻:
[1]求是科技.VisualBasic6.0數據庫開發(fā)技術與工程實踐[M].北京:人民郵電出版社.2004:121~156.
[2]夏慶梅熊華鋼:VB訪問SQLServer的三種數據訪問接口的研究[J].計算機應用研究2001.18(12).44~47.
[3]李罡,張翠頻,李雷.VisualBasic6.0編程基礎與范例[M].北京:電子工業(yè)出版社,2000,325~348.
[4]高峰霞,廖彬山.VisualBasic6.0中文提高與應用[M].北京:電子工業(yè)出版社.1999:255~261.