摘要:本文詳細介紹了幾種VisualBasic訪問數據庫的方法并對這些數據接口的性能進行了比較,提出相互的轉化關系,以便于選取最佳方案。
關鍵詞:Visual Basic 數據訪問接口DAORDOADO
中圖分類號:TP31文獻標識碼:A文章編號:1009-3044(2008)15-21008-02
Probe into Access to Database by VB
XIE Bing-ruo
(Sichuan Electromechanical Institute of Vocation and Technology, Panzhihua617000, China)
Abstract: In order to select the optimum project, this paper introduced several accesses to database by Visual Basic in detail, compared the performance of these data interfaces, and put forward the mutual conversion relation.
Key words: Visual Basic; Data Interface; DAO; RDO; ADO
1 VB訪問數據庫的原則
具體問題具體分析,根據具體的環境、條件、要求而采用適當的方案。
1.1 代碼的重用和運行的效率
例如:通過使用ODBC數據源連接數據庫的方法,可在變換多種數據庫類型的情況下,而不用頻繁修改代碼。用VBSQL通過DB-Library就做不到。而ODBC接口并不是VB訪問數據庫運行效率最高的方法。同樣,同是使用ODBC接口的ADO的效率要高于RDO。
1.2 實現的簡便性,易維護性
如果一種方法實現起來很復雜,工程的開發必然造成人力物力的浪費,同時這樣設計出來的應用程序只會支持起來更復雜或維護時更困難。例如:本地需要訪問ISAM或Jet類型數據源,那么就使用DAO/Jet,而沒有必要使用通過ODBC的方法。RDC實現起來要較RDO更容易。
1.3 安全性原則
根據環境和條件決定。例如局域網的網絡安全性要好于廣域網因而可直接利用數據控件如DC,這樣實現起來方便快捷,而廣域網需要大量的錯誤捕獲,如用RDC就不如用RDO易控制錯誤。
2 VB訪問數據庫的方法
VB訪問數據庫的方法很多,一般情況下,分成兩大類,而每一類又有很多方法,下面的列表的方式列出每一類,及每一類包含的方法。


3 數據訪問接口功能含義
(1)ADC:高級數據連接器(Adranced Data Connector):提供綁定ADO數據源到窗體的數據綁定控件上。ADC主要是一種直接訪問或者通過ADO訪問遠程OLE DB對象的一種技術,它也支持主要應用在微軟IE瀏覽器上的數據綁定控件。它是特地為Web上的瀏覽器為基礎的應用程序而設計的。
(2)ADO:Active數據對象(Active Data Objects):ADO實際是一種提供訪問各種數據類型的連接機制。ADO設計為一種極簡單的格式,通過ODBC的方法同數據庫接口。可以使用任何一種ODBC數據源,即不只適合于SQL Server、Oracle、Access等數據庫應用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數據文件。ADO是基于OLE-DB之上的技術,因此ADO通過其內部的屬性和方法提供統一的數據訪問接口方法。
(3)DAO:數據訪問對象(Data Access Objects):是一種面向對象的界面接口。通過DAO/Jet功能可以訪問ISAM數據庫,使用DAO/ODBC Direct功能可以實現遠程RDO功能。使用DAO的程序編碼非常簡單,DAO提供豐富的游標(Cursor)類型的結果集和非游標( Cursor-Less)類型的結果集,同DDL (數據描述語言)的功能很類似。
DAO模型是設計關系數據庫系統結構的對象類的集合。它們提供了完成處理這樣一個系統所需的全部操作的屬性和方法,包括創建數據庫、定義表、字段和索引,建立表間的關系,定位和查詢數據庫等工具。
(4)JET:數據連接性引擎技術(Joint Engine Technology):是一種基于工作站通過DAO 的數據庫訪問機制。雖然可以通過微軟Access提供的ODBC驅動程序訪問Jet數據庫,但使用這些驅動程序在功能上有所限制。Jet機制有自己的查詢和結果集處理功能,并可對同種或異種數據源作查詢處理。
(5)ODBC:開放式的數據庫連接(0pen Database Connectivity):是一種公認的關系數據源的接口界面。它快而輕并且提供統一接口的界面,ODBC對任何數據源都未作優化。
(6)ODBC Direct:是一種基于DAO對象的新的DAO模式,其方法和屬性與RDO功能相同。使用在有DAO代碼存在的場合,可用來訪問遠程數據源。
(7)OLE DB:是一種底層數據訪問界面接口。是用于第三方驅動程序商家開發輸出數據源到ADO技術的應用程序或用于C++的開發者開發定制的數據庫組件。OLE DB不能被VB直接調用。
(8)RDC:遠程數據訪問控件(RemoteData Control):是一種對RDO數據綁定的控件。可以輸出特定的結果集到數據源控件。
(9)RDO:遠程數據對象( Remote Data Objects ) :遠程數據對象和集合為使用代碼來創建和操作一個遠程ODBC數據庫系統的各個部件提供了一個框架。對象和集合都具有描述數據序的各個部件特征的屬性以及用來操作這些部件的方法。可以在對象和集合之間建立起關系,這些關系就代表了數據庫系統的邏輯結構。RDO是ODBC API的一個淺層界面接口。是專為訪問遠程ODBC關系數據源而設計的。
(10)VBSQL:是Visual Basic結構化查詢語言。是一種基于API的接口方法,幾乎與C的DB-Library API相同。VBSQL只支持微軟的SQLServer。VRSQL快而且輕但不支持對象界面。
4 性能比較及應用說明
用VB開發基于SQL Server的數據庫系統,以上幾種訪問SQL Server的方法各有各的特點。DAO方法是基于對象的,因而便于使用,但是它是從Visual Basic到SQL Server 的最慢方式。0DBC API 和VBSQL方法從本質上講是基于程序的。ODBCAPI方法通用性好,允許最強的互操作性,編程簡單,但速度慢于VBSQL方法。VBSQL方法通過VBSQL控件,提供了重要的SQL Server前端應用程序所需的靈活性、強大功能和良好性能。它具有真正的事件驅動及錯誤處理能力,完全支持異步處理、游標和計算列等。這些都是VBSQL方法的優勢,但其編程稍復雜。RDO是位于ODBC API之上的一個對象模型層,它依賴ODBC API 、ODBC驅動程序以及后端數據庫引擎來實現,用RDO所需的程序短小(約250 KB)、快速。RDO具備基本的ODBC處理方法,可直接執行大多數ODBC API函數,RDO包含在VB 4.0/VB 5.0企業版中,由MSRDO 32.DLL動態連接庫來實現。RDO是綜合了DAO/Jet、VBSQL/DBLib和ODBC的優點的對象模型,包含ODBC API應用層,設計為在后臺(服務器端)有數據庫存在的前提下運行,是針對SQL Server和Oracle而特別設計的。RDO的優勢在于它完全被集成在VB之中,可直接訪問SQL在Server存儲過程、完全支持T-SQL、T-SQL調試集成在開發環境中、Visual Database Tools的集成化等。但微軟已宣布今后不再對VBSQL/DBLib進行升級,而ODBC API函數一般的編程方式也不為人們所喜愛,RDO的應用將逐漸減少。至于實際使用哪一種接口方式,在很大程度上依賴于用戶的應用程序的具體情況而定。
5 結束語
在數據訪問接口中DAO最適用于單系統應用程序或小范圍本地分布使用,而RDO已被證明是許多SQL Server、Oracle以及其它大型關系數據庫開發者經常選用的最佳接口。ADO是DAO/RDO的后續產物。ADO2.0在功能上與RDO更相似,而且一般來說,在這2種模型之間有一種相似的映射關系。ADO“擴展”了DAO和RDO所使用的對象模型,這意味著它包含較少的對象,更多的屬性、方法和參數,以及事件。
數據庫接口中最新的是ADO,它是比RDO和DAO更加簡單、更加靈活的對象模型。對于新工程,應該使用ADO作為數據訪問接口。不過ADO并不是自動和現存的數據訪問應用程序代碼兼容的。當ADO封裝DAO和RDO的功能性的時候,必須將許多語言要素轉換為ADO語法。在某些情況下,這將意味著現存代碼的某些功能的1個簡單轉換。在其它情況下,最佳的做法可能是用ADO的新功能重寫該應用程序。同時要注意的是,ADO當前并不支持DAO的所有功能。ADO主要包括RDO風格的功能性,以便和OLE DB數據源交互,另外還包括遠程和DHTML技術。
一般說來,在ADO的演化過程中,馬上把大多數DAO應用程序移植到ADO上可能為時太早,因為當前的ADO并不支持數據定義(DDL)、用戶、組等。不過,如果只將DAO用于容戶/服務器應用程序,而并不依賴于Jet數據庫引擎或不使用DDL,那么現在就可以移植到ADO。
參考文獻:
[1] 宋琦凡,付敬平,使用Visual Basic開發數據庫應用軟件.北京:電子工業出版社,1996.
[2] 王道義、喬陶鵬等,Visual Basic使用詳解[M].北京:機械工業出版社會性,1999.
[3] 孟小峰,開放數據庫互連—ODBC2.0使用大全[M].北京:清華大學出版社,1995.
[4] 廖衛東,趙軍Visual Basic編程手冊[M].北京:機械工業出版社,1996.
[5] 劉云生,現代數據庫技術[M].北京:國防工業出版社,2001.