国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Visual Basic環(huán)境下數(shù)據(jù)庫訪問技術(shù)的研究

2014-09-04 00:57:52仇偉明
關(guān)鍵詞:數(shù)據(jù)表數(shù)據(jù)源控件

仇偉明

(無錫商業(yè)職業(yè)技術(shù)學(xué)院, 江蘇 無錫 214153)

基于Visual Basic環(huán)境下數(shù)據(jù)庫訪問技術(shù)的研究

仇偉明

(無錫商業(yè)職業(yè)技術(shù)學(xué)院, 江蘇 無錫 214153)

對VB提供的3種不同數(shù)據(jù)庫訪問技術(shù),即數(shù)據(jù)訪問對象(Data Access Object, DAO)、遠程數(shù)據(jù)對象(Remote Data Object, RDO)、Active X數(shù)據(jù)對象(ActiveX Data Object, ADO)做了對比研究,并就各VB數(shù)據(jù)庫訪問技術(shù)的原理和特點做了簡要闡述。

VB; 數(shù)據(jù)庫; 訪問技術(shù)

0 引 言

VB是由Microsoft公司推出的包含開發(fā)及編譯平臺的基于對象觸發(fā)事件驅(qū)動的語言,它具有靈活易學(xué)的特點,并且對數(shù)據(jù)庫具有很強的管理功能。

在VB環(huán)境下,可以使用DAO,RDO,ADO這3種技術(shù)來訪問數(shù)據(jù)庫中的數(shù)據(jù)。根據(jù)在訪問數(shù)據(jù)時是否需要編寫代碼,3種數(shù)據(jù)庫訪問技術(shù)又都具有以下兩種具體的訪問形式:使用Data控件的非編程訪問方式,即通過對控件的數(shù)據(jù)綁定來訪問數(shù)據(jù)庫;使用對象模型的編程訪問方式,即通過定義對象和編寫代碼來訪問數(shù)據(jù)庫。

1 DAO

DAO基于使用一種接口來訪問多種類型的數(shù)據(jù)這一設(shè)計思想而設(shè)計的。它將Microsoft連接性引擎技術(shù)(Joint Engine Technology, JET)數(shù)據(jù)庫引擎外顯,并允許VB開發(fā)者通過開放式數(shù)據(jù)連接(Open Database Connectivity, ODBC)直接連接到數(shù)據(jù)庫并訪問其中的數(shù)據(jù)表。

在VB中提供了與DAO相關(guān)的兩種具體的數(shù)據(jù)庫訪問形式:Data控件和DAO對象模型。

Data控件給出較少的訪問現(xiàn)存數(shù)據(jù)庫的功能,這些功能不需要通過編程來實現(xiàn),VB可把DAO封裝成Data控件,Data控件將數(shù)據(jù)的值作為屬性,數(shù)據(jù)的查詢作為方法,數(shù)據(jù)值的變化作為事件,通過設(shè)置相應(yīng)的DatabaseName屬性和RecordSource屬性就可以將Data控件與數(shù)據(jù)庫中的記錄源連接起來[1],通過Data控件來對數(shù)據(jù)庫進行操作,其操作對象是數(shù)據(jù)表中的記錄和字段。

DAO對象模型則是通過編程來完整的定義操作對象從而訪問數(shù)據(jù)庫的。DAO提供了兩種不同的對象模型:一種是通過Jet數(shù)據(jù)庫引擎來訪問數(shù)據(jù);另一種是通過ODBC Direct來訪問數(shù)據(jù)[2],這兩種對象模型都是層次結(jié)構(gòu)的。使用Jet的DAO對象模型和使用ODBC Direct的DAO對象模型分別如圖1和圖2所示。

圖1 使用Jet的DAO對象模型

圖2 使用ODBC Direct的DAO對象模型

使用Jet的DAO對象模型中重要對象說明:DBEngine對象在工程項目中引用到DAO時會被自動創(chuàng)建;Error對象在發(fā)生數(shù)據(jù)庫操作錯誤時處理錯誤和保存相關(guān)信息;Workspace對象管理一個數(shù)據(jù)庫會話;Database對象對一個數(shù)據(jù)庫進行創(chuàng)建或打開;TableDef對象可以訪問單個數(shù)據(jù)表的所有字段(Field對象)和數(shù)據(jù)表的索引(Index對象);QueryDef對象定義一個查詢;Recordset對象代表一個表的記錄集或者查詢命令執(zhí)行的結(jié)果;Relation對象用來定義不同數(shù)據(jù)表或查詢中字段之間的相互關(guān)系;Field對象對應(yīng)著一個數(shù)據(jù)表中的某個字段;User對象代表了數(shù)據(jù)庫的某個用戶;Group對象則包含了具有相同權(quán)限的一組用戶。

與使用Jet的DAO對象模型相比較,使用ODBC Direct的DAO對象模型去掉了數(shù)據(jù)庫中的處理對象,新增了Connection對象。Connection對象代表一個到指定數(shù)據(jù)源的成功連接[3]。

使用Jet的DAO對象模型特點是支持多表連接的Recordset對象中數(shù)據(jù)的更新;支持不同數(shù)據(jù)源中數(shù)據(jù)表的連接;支持對DDL(數(shù)據(jù)定義語言)的操作;支持將ODBC數(shù)據(jù)源中的數(shù)據(jù)與窗體緊密結(jié)合。使用ODBC Direct的DAO對象模型特點是支持直接訪問ODBC數(shù)據(jù)源,進而使程序代碼執(zhí)行速度更快、效率更高;支持訪問特定的服務(wù)器;支持數(shù)據(jù)的批量更新。

DAO可以識別3類數(shù)據(jù)庫:VB數(shù)據(jù)庫,也就是*.mdb數(shù)據(jù)庫;索引順序訪問方法(Indexed Sequential Access Method, ISAM)數(shù)據(jù)庫;ODBC數(shù)據(jù)庫。

使用DAO技術(shù)可以對Microsoft Jet引擎數(shù)據(jù)庫方便的進行訪問,但由于Microsoft Jet不支持多線程,因此,必須對調(diào)用到應(yīng)用程序主線程的所有DAO進行限制。

2 RDO

RDO提供了一系列對象,用來滿足遠程數(shù)據(jù)訪問的特殊要求[4]。它是位于ODBC應(yīng)用程序接口之上的對象模型薄層,它基于ODBC應(yīng)用程序接口、選定的ODBC驅(qū)動程序以及后端數(shù)據(jù)庫引擎來實現(xiàn)大部分的功能,它具備基本的ODBC處理方法,可以對大部分ODBC 應(yīng)用程序接口函數(shù)直接進行執(zhí)行,從形式上凸顯出所有ODBC的底層功能以及靈活性,是遠程訪問ODBC關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的有效界面接口。

RDO是基于DAO衍生出來的,兩者之間最大的不同在于其數(shù)據(jù)庫模式。DAO操作是針對數(shù)據(jù)表中的記錄和字段,而RDO操作是針對行和列的,也就是說DAO是ISAM模式,RDO是關(guān)系模式。此外,DAO是訪問Jet引擎(Jet是ISAM)的接口,而RDO則是訪問ODBC的接口。因此,RDO是綜合了DAO/Jet,VBSQL/DB Lib,ODBC三者優(yōu)點的對象,其對象模型如圖3所示。

圖3 RDO對象模型

RDO對象模型中重要對象說明:rdoEngine對象在應(yīng)用程序第一次訪問RDO時會自動創(chuàng)建;rdoError對象當發(fā)生錯誤時被自動創(chuàng)建,其用于處理RDO所產(chǎn)生的ODBC錯誤和消息;rdoEnvironment對象為連接及事務(wù)作用域的一個邏輯集合做定義;rdoConnection對象表示分配或打開遠程數(shù)據(jù)源上特定數(shù)據(jù)庫之間的一個連接;rdoQuery對象是定義一個SQL查詢;rdoResultset對象表示對一個查詢所產(chǎn)生的數(shù)據(jù)行直接運行;rdoTable對象表示存儲定義一個基本表或SQL視圖;rdoParameter對象表示與rdoQuery相關(guān)聯(lián)的某個參數(shù);rdocolumn對象表示含有公共數(shù)據(jù)類型和公共屬性的列數(shù)據(jù);rdoPrepareStatement對象預(yù)先定義了一個查詢。

RDO只有在后臺(服務(wù)器端)有數(shù)據(jù)庫存在的前提下才可運行,它是針對SQL Server和Oracle等大型關(guān)系數(shù)據(jù)庫而特別設(shè)計的。VB完全集成RDO,RDO具有直接訪問SQL Server存儲過程、支持Transact-SQL以及Visual Database Tools的集成化等優(yōu)勢。RDO的特點是:應(yīng)用程序可訪問ODBC數(shù)據(jù)源而不需要使用本地的查詢處理程序;可以執(zhí)行與數(shù)據(jù)定義或數(shù)據(jù)操作有關(guān)的查詢;可以執(zhí)行查詢操作并對任意數(shù)量的結(jié)果集進行處理;可以限制返回或處理的數(shù)據(jù)行數(shù);可以對簡單的無游標結(jié)果集或更為復(fù)雜的游標進行創(chuàng)建;可以在不妨礙執(zhí)行查詢的情況下,對遠程數(shù)據(jù)資源產(chǎn)生的所有信息和錯誤進行監(jiān)控。許多大型關(guān)系數(shù)據(jù)庫開發(fā)者經(jīng)常選用RDO來訪問數(shù)據(jù)庫。

3 ADO

ADO是DAO,RDO的后繼產(chǎn)物,實際上是一種面向?qū)ο蟮?,提供訪問各種數(shù)據(jù)類型的連接機制[5]。它通過對對象鏈接和嵌入數(shù)據(jù)庫(Object Link and Embedding DataBase, OLE DB)進行封裝,具備了OLE DB所有的功能,OLE DB是一種底層數(shù)據(jù)訪問界面接口,是用于第三方驅(qū)動程序商家開發(fā)輸出數(shù)據(jù)源到ADO的數(shù)據(jù)庫組件,其不能被VB直接調(diào)用[6]。ADO通過OLE DB可以訪問任何類型的數(shù)據(jù)源。

在VB中提供了兩種與ADO有關(guān)的訪問數(shù)據(jù)的方法:Data控件和ADO對象模型。

使用ADO Data控件可以快速建立數(shù)據(jù)提供者與數(shù)據(jù)綁定控件之間的連接[7]。ADO Data控件通過Recordset對象支持訪問數(shù)據(jù)庫中數(shù)據(jù),并允許將指針在不同記錄之間移動,從而對記錄進行顯示和操縱。ADO Data控件雖然能夠操作、訪問數(shù)據(jù)庫,但是它并不能夠顯示數(shù)據(jù)庫中數(shù)據(jù)的內(nèi)容。ADO Data控件需要與其它控件結(jié)合使用。這些與ADO Data控件結(jié)合使用的控件(DataList控件、DataCombo控件和Datagrid控件)稱之為“數(shù)據(jù)察覺控件”。在對Data控件中數(shù)據(jù)的相關(guān)屬性設(shè)置好的前提下,無需編寫代碼或者只需編寫少量的代碼就可以達到數(shù)據(jù)訪問的目的,同時,可以結(jié)合數(shù)據(jù)察覺控件來顯示和修改數(shù)據(jù)。

ADO對象模型如圖4所示。

圖4 ADO對象模型

ADO對象模型“擴展”了DAO和 RDO 所使用的對象模型,這意味著它包含較少的對象,更多的屬性、方法以及事件。ADO同DAO和RDO一樣,其對象模型是層次型的,即一個較低的數(shù)據(jù)對象是幾個較高層次對象的子對象[8]。

ADO對象模型中重要對象說明:Connection對象包含相關(guān)數(shù)據(jù)提供程序和結(jié)構(gòu)描述的信息;Command對象包含某個命令;Recorded對象用來對數(shù)據(jù)操作返回的記錄集進行存儲;Errors對象包含數(shù)據(jù)提供程序出錯時的擴展信息;Properties對象包含某個ADO對象提供程序的定義特征; Parameter對象包含Command對象的某單個參數(shù)的信息;Fields對象包含記錄集中數(shù)據(jù)的某單個列的信息[8]。

使用ADO Data控件的特點是:ADO Data控件封裝了相應(yīng)代碼的功能;簡化了數(shù)據(jù)表瀏覽、添加、修改記錄方面的操作。使用ADO模型的特點是:靈活性強,便于使用,可以動態(tài)的指定數(shù)據(jù)源,可以打開同一個數(shù)據(jù)源上多個記錄集或執(zhí)行同一個數(shù)據(jù)源上多個命令,可以建立獨立的連接對象;可以操作任何的OLE DB數(shù)據(jù)源,不損失任何OLE DB的功能;支持多種編程語言;可擴展性好,能夠基于數(shù)據(jù)提供者屬性集合動態(tài)地對數(shù)據(jù)提供者進行指定。

4 結(jié) 語

介紹的3種在VB環(huán)境下的數(shù)據(jù)訪問技術(shù),每一種都代表了數(shù)據(jù)庫訪問技術(shù)經(jīng)歷和發(fā)展的一個重要階段,其中ADO可以快速而方便地訪問不同數(shù)據(jù)源,占用內(nèi)存少[9],所以其發(fā)展前途也很好,已經(jīng)成為當前數(shù)據(jù)庫開發(fā)的主流,但是,ADO并不完全支持或兼容DAO和RDO的所有功能,所以需要熟練掌握3種數(shù)據(jù)庫訪問技術(shù),從而出色完成VB環(huán)境下數(shù)據(jù)庫的開發(fā)工作。

[1] 李國華.個性化教學(xué)設(shè)計建模的研究與實現(xiàn)[D]:[碩士學(xué)位論文].南京:東南大學(xué),2005.

[2] 馬思紅,陸揚.基于VB的SQL Server數(shù)據(jù)庫訪問技術(shù)[J].電腦與電信,2007(10):56-57.

[3] 谷震離.VB遠程訪問SQL Server數(shù)據(jù)庫技術(shù)分析與比較[J].廣東經(jīng)濟管理學(xué)院學(xué)報,2005(2):71-75.

[4] 張仁霖.淺談Visual Basic 6.0的數(shù)據(jù)庫功能[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報,2006(5):95-96.

[5] 范乃英,王蘭林.談VB的數(shù)據(jù)庫訪問技術(shù)[J].河南財政稅務(wù)高等??茖W(xué)校學(xué)報,2008(6):81-83.

[6] 張勇.VB數(shù)據(jù)庫開發(fā)方案的比較[J].宿州教育學(xué)院學(xué)報,2003(4):71-73.

[7] 張宗飛.VB中基于ADO的數(shù)據(jù)庫訪問技術(shù)分析及應(yīng)用[J].計算機與數(shù)字工程,2008(3):53-56,165.

[8] 張磊.VB中用ADO對象動態(tài)訪問Access[J].長春師范學(xué)院學(xué)報,2004(5):36-39.

[9] 陳長青,王萍.數(shù)據(jù)庫技術(shù)在光電設(shè)備遠程控制系統(tǒng)中的應(yīng)用[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2007,28(3):257-260.

Research of database access technology based on Visual Basic environment

QIU Wei-ming

(Wuxi Institute of Commerce, Wuxi 214153, China)

Three different database access technologies based on VB, which are Data Access Object (DAO), Remote Data Object (RDO) and ActiveX Data Object (ADO) respectively, are studied. The principles and features of the technologies are discussed in detail.

VB; database; access technology.

2014-05-20

國家教師科研十二五規(guī)劃重點課題基金資助項目(GJL1321360)

仇偉明(1980-),男,漢族,江蘇無錫人,無錫商業(yè)職業(yè)技術(shù)學(xué)院講師,碩士,主要從事計算機網(wǎng)絡(luò)、軟件工程方向研究,E-mail:qiuweiming0617@163.com.

TP 399

A

1674-1374(2014)05-0490-05

猜你喜歡
數(shù)據(jù)表數(shù)據(jù)源控件
湖北省新冠肺炎疫情數(shù)據(jù)表
黨員生活(2020年2期)2020-04-17 09:56:30
基于列控工程數(shù)據(jù)表建立線路拓撲關(guān)系的研究
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
圖表
基于VSL的動態(tài)數(shù)據(jù)表應(yīng)用研究
河南科技(2014年24期)2014-02-27 14:19:25
分布式異構(gòu)數(shù)據(jù)源標準化查詢設(shè)計與實現(xiàn)
就這樣玩會VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
呼和浩特市| 孝感市| 田阳县| 东丽区| 澎湖县| 庆阳市| 子洲县| 娱乐| 颍上县| 阿鲁科尔沁旗| 菏泽市| 灵武市| 亳州市| 临高县| 东光县| 内黄县| 德格县| 滦平县| 阿拉善盟| 遵化市| 龙江县| 永安市| 农安县| 邳州市| 泰顺县| 博客| 汾阳市| 虹口区| 佛坪县| 庆阳市| 信宜市| 宁化县| 观塘区| 扶绥县| 古交市| 榕江县| 乳山市| 海南省| 哈密市| 长治市| 金华市|