摘要:無(wú)論是信息管理系統(tǒng),還是多媒體應(yīng)用系統(tǒng),都需要強(qiáng)大的數(shù)據(jù)庫(kù)來(lái)支持,訪問(wèn)數(shù)據(jù)庫(kù)則是應(yīng)用程序必須具備的基本功能之一。Visual Basic 6.0提供了多種訪問(wèn)數(shù)據(jù)庫(kù)的方法,包括數(shù)據(jù)控件、DAO(數(shù)據(jù)訪問(wèn)對(duì)象)、RDO(遠(yuǎn)程數(shù)據(jù)對(duì)象)、VBSQL以及ADO(ActiveX Data Objects)等。本文分析比較了兩類VB對(duì)數(shù)據(jù)庫(kù)編程的常用方法,總結(jié)了各類方法在VB中對(duì)數(shù)據(jù)庫(kù)編程的使用原則。
關(guān)鍵詞:Visual Basic 6.0數(shù)據(jù)訪問(wèn)接口接口對(duì)象法(API)數(shù)據(jù)控件法(Data)
訪問(wèn)數(shù)據(jù)庫(kù)是應(yīng)用程序必須具備的基本功能之一,Visual Basic 6.0中訪問(wèn)數(shù)據(jù)庫(kù)的方法繁多,各種方法究竟有何不同,孰優(yōu)孰劣?本文從多方面對(duì)各種方法進(jìn)行了分析與比較,歸納了在具體應(yīng)用中使用各種方法的原則。
1、兩類訪問(wèn)數(shù)據(jù)庫(kù)的方法
1.1接口對(duì)象法(API)
下面介紹各種數(shù)據(jù)訪問(wèn)接口功能及含義:
⑴ADO即ActiveX數(shù)據(jù)對(duì)象(ActiveX Data Objects),是Microsoft提出的應(yīng)用程序接口(API)用以實(shí)現(xiàn)訪問(wèn)關(guān)系或非關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù),實(shí)際是一種提供訪問(wèn)各種數(shù)據(jù)類型的連接機(jī)制。ADO是對(duì)當(dāng)前微軟所支持的數(shù)據(jù)庫(kù)進(jìn)行操作的最有效和最簡(jiǎn)單直接的方法,它是一種功能強(qiáng)大的數(shù)據(jù)訪問(wèn)編程模式,從而使得大部分?jǐn)?shù)據(jù)源可編程的屬性得以直接擴(kuò)展到你的Active Server頁(yè)面上。
⑵DAO即數(shù)據(jù)訪問(wèn)對(duì)象(Data Access Objects),是一種應(yīng)用程序編程接口(API),它允許程序員請(qǐng)求對(duì)微軟的Access數(shù)據(jù)庫(kù)的訪問(wèn)。DAO是微軟的第一個(gè)面向?qū)ο蟮臄?shù)據(jù)庫(kù)接口。DAO對(duì)象封閉了Access的Jet函數(shù)。通過(guò)Jet函數(shù),它還可以訪問(wèn)其他的結(jié)構(gòu)化查詢語(yǔ)言(SQL)數(shù)據(jù)庫(kù)。使用DAO的程序編碼非常簡(jiǎn)單,DAO提供豐富的游標(biāo)(Cursor)類型的結(jié)果集和非游標(biāo)(Cursor-Less)類型的結(jié)果集,同DDL(數(shù)據(jù)描述語(yǔ)言)的功能很類似。DAO模型是設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)的對(duì)象類的集合。它們提供了完成管理這樣一個(gè)系統(tǒng)所需的全部操作的屬性和方法,包括創(chuàng)建數(shù)據(jù)庫(kù),定義表、字段和索引,建立表間的關(guān)系,定位和查詢數(shù)據(jù)庫(kù)等工具。
⑶RDO即遠(yuǎn)程數(shù)據(jù)對(duì)象(Remote Data Objects),是一個(gè)到ODBC數(shù)據(jù)庫(kù)系統(tǒng)的、面向?qū)ο蟮臄?shù)據(jù)訪問(wèn)接口,它同易于使用的DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問(wèn)Jet或ISAM數(shù)據(jù)庫(kù)方面受到限制,而且它只能通過(guò)現(xiàn)存的ODBC驅(qū)動(dòng)程序來(lái)訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)。但是,RDO已被證明是許多SQL Server、Oracle以及其他大型關(guān)系數(shù)據(jù)庫(kù)開發(fā)者經(jīng)常選用的最佳接口。RDO提供了用來(lái)訪問(wèn)存儲(chǔ)過(guò)程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性以及方法。
⑷VBSQL是Visual Basic結(jié)構(gòu)化查詢語(yǔ)言,是一種基于應(yīng)用程序接口(API)的接口方法,幾乎與VC++的DB-Library API相同。VBSQL只支持微軟的SQL Server,快而且輕但不支持對(duì)象界面。
1.2數(shù)據(jù)控件法
Data Control即DAO/Jet數(shù)據(jù)界面接口,該控件連接一個(gè)記錄集(Record Set)與數(shù)據(jù)庫(kù),并處理記錄。Data控件上有四個(gè)按鈕,從左到右依次是:移到第一條記錄、移到上一條記錄、移到下一條記錄、移到最后一條記錄。DBC Combo、Db list、DB Grid和MSFlex Grid控件可與Data控件綁定共同管理記錄集,顯示或操作記錄,Picture、Label、Text Box、Image、List box和Combo Box控件可連接綁定Data控件共同管理的記錄集的單一字段,顯示當(dāng)前記錄。
Data控件的重要屬性及相關(guān)使用方法如下:
Connect屬性定義Data控件連接Access時(shí),定義數(shù)據(jù)庫(kù)名。連接FoxPro或dBase時(shí),定義數(shù)據(jù)庫(kù)文件目錄名。
Database Name屬性當(dāng)Data控件連接Access時(shí),定義數(shù)據(jù)庫(kù)名。連接FoxPro或dBase時(shí),定義數(shù)據(jù)庫(kù)文件的目錄名。
Record Source屬性定義Data控件使用的數(shù)據(jù)表名。
Record Set屬性指定或返回與Data控件對(duì)應(yīng)的保存有Data控件查詢結(jié)果記錄集的Record Set對(duì)象。
使用Data控件訪問(wèn)數(shù)據(jù)庫(kù)的方法:
首先用其連接數(shù)據(jù)庫(kù),然后設(shè)置綁定控件屬性以及顯示及修改數(shù)據(jù)。Text Box控件可以簡(jiǎn)單地實(shí)現(xiàn)綁定,其Data Source屬性指定連接的數(shù)據(jù)源。對(duì)于Data控件,該屬性必須在設(shè)計(jì)時(shí)賦值。其Data Field屬性指定顯示的字段。使用Data控件和Text Box控件訪問(wèn)數(shù)據(jù)庫(kù)的步驟如下:
⑴設(shè)置Data控件的Control屬性指定數(shù)據(jù)庫(kù)的類型;
⑵設(shè)置Data控件的Database Name屬性指定數(shù)據(jù)庫(kù)的文件名;
⑶設(shè)置Text Box控件的Data Field屬性指定數(shù)據(jù)源;
⑷設(shè)置Text Box控件的Data Field屬性指定與該控件連接的數(shù)據(jù)字段。
2、兩類方法性能比較及應(yīng)用說(shuō)明
兩類方法及其常用方法可作如下劃分圖:
2.1數(shù)據(jù)控件Data:
數(shù)據(jù)控件Data連接數(shù)據(jù)庫(kù)是最簡(jiǎn)單的方法。只須設(shè)置該控件的Connect、Data等屬性即可完成連接??梢杂肈ata控件的Record Set對(duì)象的Add New、Edit、Delete等方法,使其完成數(shù)據(jù)指針移動(dòng)等操作,實(shí)現(xiàn)增加、修改、刪除記錄等數(shù)據(jù)庫(kù)的基本操作。但是使用Data控件也有局限性,它只能連接Access、dBase、FoxPro等預(yù)定義數(shù)據(jù)庫(kù)。
在VB中如果使用Data控件訪問(wèn)數(shù)據(jù)庫(kù),那么程序的執(zhí)行必須要一些大型DLL動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library)來(lái)支持。
2.2接口對(duì)象法(API):
接口對(duì)象比較多,常見有六種(見上圖),在此舉出四例:
(1)ADO可以使用任何一種ODBC數(shù)據(jù)源,即不止適合于SQL Server、Oracle、Access等數(shù)據(jù)庫(kù)應(yīng)用程序,也適合于Excel表格、文本文件、圖形文件和無(wú)格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過(guò)其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問(wèn)接口方法。ADO使得客戶端應(yīng)用程序能夠通過(guò)任何OLE DB提供者來(lái)訪問(wèn)和操作數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)。ADO最主要的優(yōu)點(diǎn)是易于使用、速度快、內(nèi)存支出少 和磁盤遺跡小。
(2)DAO在Visual Basic 6.0提供的一個(gè)對(duì)象庫(kù)中。使用該對(duì)象可以訪問(wèn)Access、dBase、FoxPro等數(shù)據(jù)庫(kù),也可訪問(wèn)ODBC數(shù)據(jù)庫(kù)。
(3)RDO最強(qiáng)大和最重要的特性之一是:它可以查詢和處理由存儲(chǔ)過(guò)程返回的結(jié)果,無(wú)論它有多么復(fù)雜。RDO是ODBC API之上的一個(gè)對(duì)象層,其依賴ODBC API、ODBC驅(qū)動(dòng)程序和數(shù)據(jù)服務(wù)引擎,實(shí)現(xiàn)了對(duì)更多類型的數(shù)據(jù)庫(kù)訪問(wèn)。RDO本身具有短小、快速的特性。
(4)VBSQL只支持微軟的SQL Server。VBSQL快而且輕但不支持對(duì)象界面。
3、各方法性能比較
用VB開發(fā)基于SQL Server的數(shù)據(jù)庫(kù)系統(tǒng),以上幾種訪問(wèn)SQL Server的方法各有各的特點(diǎn)。DAO方法是基于對(duì)象的,因而便于使用,但是它從Visual Basic到SQL Server的最慢的方式。ODBC API和VBSQL方法從本質(zhì)上講是基于程序的。ODBC API方法通用性好,允許最強(qiáng)的互操作性,編程簡(jiǎn)單,但速度慢于VBSQL方法。VBSQL方法通過(guò)VBSQL控件,提供了重要的SQL Server前端應(yīng)用程序所需的靈活性、強(qiáng)大功能和良好性能。它具有真正的事件驅(qū)動(dòng)及錯(cuò)誤處理能力,完全支持異步處理、游標(biāo)和計(jì)算列等。這些都是VBSQL方法超出其它方法的優(yōu)勢(shì),但其編程稍復(fù)雜。RDO的優(yōu)勢(shì)在于它完全被集成在VB之中,可直接訪問(wèn)SQL Server存儲(chǔ)過(guò)程。但微軟已宣布今后不再對(duì)VBSQL/DBLib進(jìn)行升級(jí),而ODBC API函數(shù)一般的編程方式也不為人們所喜愛,RDO的應(yīng)用將逐漸減少。實(shí)際編程過(guò)程中對(duì)應(yīng)具體問(wèn)題具體分析,根據(jù)具體的環(huán)境、條件、要求而采用適當(dāng)?shù)姆桨?。主要是看代碼的重用、運(yùn)行的效率、實(shí)現(xiàn)的簡(jiǎn)便性、易維護(hù)性及安全性。