耿小芬 徐忠軍
摘 要:Visual Basic 作為一種流行的編程軟件,憑其簡單易學得到初學者的青睞并被廣泛應用。VB主要提供了三種數據訪問技術,包括 DAO數據訪問模式、遠程數據對象RDO模式以及基于開放式數據源 ODBC的ADO數據訪問技術,本文通過對以上幾種數據庫訪問技術的分析比較,提出ADO技術的優(yōu)勢。
關鍵詞:VB DAO RDO ADO
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1673-8454(2009)13-0083-02
Visual Basic(簡稱VB)是微軟公司推出的可視化編程工具之一,是目前世界上使用比較廣泛的RAD(Rapid Application Develop)工具。VB在數據庫應用開發(fā)方面的能力十分強大,并且微軟還設計了多種數據訪問的方法。數據訪問是通過數據訪問接口實現的,數據訪問接口是數據提供方和使用方的中介,沒有合適的數據訪問接口,就無法進入數據庫。VB訪問數據庫的方法很多,本文重點介紹DAO,RDO和ADO這三種常見的數據庫訪問的方法。
一、VB中數據的訪問技術簡介
1.DAO(Data Access Objects) 數據訪問對象
DAO是允許程序員操作Microsoft Jet數據庫引擎的第一個面向對象的接口,最初是為了實現對ACCESS 數據庫的訪問而開發(fā)的程序接口。它采用層次結構,提供了豐富的數據對象,通過DAO/Jet功能可以訪問ISAM(順序索引查找方法)數據庫,使用DAO/ODBC Direct功能可以實現遠程RDO功能,DAO可通過ODBC像直接連接到其他數據庫一樣,直接連接到Access數據庫,但DAO不能觸發(fā)事件。
DAO提供了管理系統所需的全部操作的屬性和方法,包括創(chuàng)建數據庫,定義表、字段和索引,建立表間的關系,定位和查詢數據庫等工具。在操作中VB把DAO模型封裝成Data控件,通過設置相應的DatabaseName屬性和RecordSource屬性就可以將Data控件與數據庫中的記錄源連接起來了,這樣就可以使用Data控件來對數據庫進行操作。DAO最適用于單系統應用程序或在小范圍本地分布使用,所以如果數據庫是Access數據庫且是本地使用的話,建議使用這種訪問方式。
2.RDO(Remote Data Objects) 遠程數據對象
RDO是一個到ODBC的、面向對象的數據訪問接口。它依賴 ODBC API、選定的 ODBC 驅動程序以及后端數據庫引擎實現大部分的智能和功能。它具備DAO的基本功能,保持了DAO的簡單特點,是專為訪問遠程ODBC關系數據源而設計的。它同易于使用的DAO style組合在一起,提供了一個接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問Jet或ISAM數據庫方面受到限制,而且它只能通過現存的ODBC驅動程序來訪問關系數據庫。但是,RDO已被證明是許多大型關系數據庫開發(fā)者經常選用的最佳接口。RDO提供了用來訪問存儲過程和復雜結果集的更多和更復雜的對象、屬性,以及方法。
VB從5.0版本開始使用RDO接口訪問遠程數據庫,和DAO一樣,在VB中也把其封裝為RDO控件,其使用方法與DAO控件的使用方法完全一樣。雖然DAO也可以訪問遠程數據庫,而且可以通過使用ODBC Drivers 代替DAO/jet 顯著提高數據訪問速度,但是,在使用ODBC Drivers時,將無法使用某些 Microsoft Jet數據庫的功能,因此,從VB5.0開始,大多使用RDO訪問遠程數據庫。RDO適合開發(fā)一些大的關系數據庫,如SQL Server、Oracle等,特別適用于用戶/服務器應用程序的開發(fā)。
3.ADO(ActiveX Data Object)Active數據對象
ADO是DAO和RDO的后繼產物,它設計為一種極簡單的格式,即通過ODBC的方法同數據庫接口,可以使用任何一種ODBC數據源,即不止適合于SQL Server、Oracle、Access等數據庫應用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數據文件,是一個便于使用的應用程序層接口。ADO是為Microsoft最新和最強大的數據訪問范例OLE DB而設計的,OLE DB是新的底層接口,程序中使用了大量的COM接口,而ADO封裝了這些接口,時下流行的快速應用程序開發(fā)工具、數據庫工具、應用程序開發(fā)環(huán)境和腳本語言都可以訪問這種接口。
從VB6.0開始使用ADO進行數據訪問,ADO是基于面向對象模型的訪問技術,用它產生的應用程序占用內存少,目前已經成為當前數據庫開發(fā)的主流。它適合于各種客戶/服務器應用系統和基于 Web 的應用系統中,尤其在一些腳本語言中訪問數據庫操作是ADO的主要優(yōu)勢。由于ADO 的設計綜合了RDO和DAO的最佳性能,它的語法簡單,非常易于學習,因此,ADO正在逐漸代替DAO與RDO的數據訪問接口。
二、數據庫訪問技術對比分析
DAO是用來實現訪問Access數據庫的Jet引擎接口,其操作是針對記錄和字段,它對于單一的數據庫應用系統非常有效;RDO是用來訪問ODBC面向對象的接口,其操作針對行和列,主要用于開發(fā)大型關系數據庫應用程序;ADO訪問數據庫是通過訪問OLE DB數據并提供程序來進行的,能夠處理任何類型的數據,是一種通用的數據訪問范例。
1.數據庫對象模型的差異
DAO 模型是設計關系數據庫系統結構的對象類的集合,是一種Jet數據庫引擎的面向對象的接口。Microsoft DAO Jet 數據庫中包括有DB Engine對象、Workspace對象、Database對象等,最頂層的對象是 DB Engine對象,模型中其他對象都是DBEngine 對象的“子”對象。RDO 模型與DAO模型很相似,最明顯的區(qū)別是RDO對象模型中包括有RDO Engine對象、RDO Environment對象、RDO Connection對象等14 個可供使用的主要對象。
ADO模型可以看作是RDO模型的精華版,它擴展了DAO和RDO所使用的對象模型,它包含較少的對象、更多的屬性方法參數以及事件。模型中只有3個對象成員Connection、Command、Recordset,以及幾個集合對象Error、Parameter、Field和Property等。
2.訪問數據庫方式的不同
DAO 技術主要實現對ISAM類型數據庫的訪問,如對Foxpro、Access、DBase等數據庫的訪問,并允許Visual Basic開發(fā)者通過ODBC直接連接到Access表,這是一種最為簡便的訪問已有數據庫的方法,在VB 6.0中實現得非常巧妙。DAO Jet服務的另一個優(yōu)勢就是它包含了自己的查詢引擎,即不需要遠程的或基于服務器的數據庫系統(如SQL Server或Oracle)的支持就能完成數據請求。如果程序需要在單機環(huán)境下運行,DAO Jet數據服務是最好的選擇。
ADO技術基于通用對象模型(COM),它提供了多種語言的訪問技術,同時,由于ADO提供了訪問自動化接口,所以,ADO可以用描述的腳本語言來訪問VBScript,VCScript等。
DAO、RDO、ADO數據訪問技術的區(qū)別如表1所示。
三、VB訪問數據庫的原則
在數據訪問接口中三種訪問技術各有各的特點,至于實際使用哪一種接口方式,在很大程度上依賴于用戶的應用程序的具體情況而定。要做到具體問題具體分析,根據具體的環(huán)境、條件、要求而采用適當的方案,應用中注意以下幾個原則:
1.代碼的重用和運行的效率
比如通過使用ODBC數據源連接數據庫的方法,可在變換多種數據庫類型的情況下,不用頻繁修改代碼。而用VB SQL通過DB-Library就做不到。當然ODBC接口并不是VB訪問數據庫運行效率最高的方法。
2.實現的簡便性,易維護性
如果數據量不大,而且要求開發(fā)周期短的情況,建議使用DAO+Access,雖然DAO功能并不強大,但是它對Jet引擎進行了加速優(yōu)化處理,所以這種搭配應該是比較好的選擇。如果我們設計的方法復雜,那么設計出來的應用程序也會很復雜,維護時就很困難。比如:本地需要訪問ISAM 或Jet 類型數據源,那么就使用DAO/Jet,而沒有必要使用通過ODBC的方法。
3.安全性原則
這一條應根據環(huán)境和條件決定。例如局域網的網絡安全性要好于廣域網,因而可直接利用數據控件如RDC,這樣實現起來方便快捷,廣域網需要大量的錯誤捕獲,用RDC就不如用RDO易控制錯誤。
四、結束語
由于OLE DB的ADO對象模型具有簡單性、可擴充性、數據訪問的一致性等優(yōu)點,它正在逐步代替老的DAO和RDO數據訪問接口,成為新的標準數據訪問接口,其應用必將越來越廣。但是ADO并不支持DAO的所有功能,在ADO的演化過程中,馬上把大多數DAO應用程序移植到ADO上可能為時太早,例如當前的ADO并不支持數據定義(DDL)、用戶、組等。微軟的新名詞層出不窮,最新又推出了UDA,隨著網絡技術和數據庫技術的不斷發(fā)展,現在的應用系統對數據集成的要求越來越高,我們要靈活掌握各種數據庫訪問技術,更好地完成數據庫的開發(fā)。
參考文獻:
[1]姚小兵.VB中ADO技術的應用[J].電腦與信息技術,2005,13(4):22-24.
[2]杜玲玲,羅紅星.VB下利用ADO實現對SQL Server的訪問[J].江西電力職業(yè)技術學院學報,2005,18(2):39-41.
[3]李林等.Visual Basic程序設計[M].北京:地質出版社,2006.