VF輔導(dǎo):數(shù)據(jù)庫訪問技術(shù)

字號(hào):

首先我們介紹DAO。
    DAO(Data Access Objects)數(shù)據(jù)訪問對(duì)象是第一個(gè)面向?qū)ο蟮慕涌?,它顯露了Microsoft Jet數(shù)據(jù)庫引擎(最早是給Microsoft Access所使用,現(xiàn)在已經(jīng)支持其它數(shù)據(jù)庫),并允許開發(fā)者通過ODBC象直接連接到其他數(shù)據(jù)庫一樣,直接連接到Access表。DAO最適用于單系統(tǒng)應(yīng)用程序或小范圍本地分布使用。
    RDO(Remote Data Objects)遠(yuǎn)程數(shù)據(jù)對(duì)象是一個(gè)到ODBC的、面向?qū)ο蟮臄?shù)據(jù)訪問接口,它同易于使用的DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有ODBC的底層功能和靈活性。盡管RDO在很好地訪問Jet或ISAM數(shù)據(jù)庫方面受到限制,而且它只能通過現(xiàn)存的ODBC驅(qū)動(dòng)程序來訪問關(guān)系數(shù)據(jù)庫。但是,RDO已被證明是許多SQL Server、Oracle以及其他大型關(guān)系數(shù)據(jù)庫開發(fā)者經(jīng)常選用的接口。RDO提供了用來訪問存儲(chǔ)過程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性,以及方法。
    ADO(ActiveX Data Object)是DAO/RDO的后繼產(chǎn)物。ADO 2.0在功能上與RDO更相似,而且一般來說,在這兩種模型之間有一種相似的映射關(guān)系。ADO“擴(kuò)展”了DAO和RDO所使用的對(duì)象模型,這意味著它包含較少的對(duì)象、更多的屬性、方法(和參數(shù)),以及事件。例如,ADO沒有與rdoEngine和rdoEnvironment對(duì)象相等同的對(duì)象,可以顯露ODBC驅(qū)動(dòng)程序管理器和hEnv接口。盡管事實(shí)上您的接口可能是通過ODBC OLE DB服務(wù)提供程序?qū)崿F(xiàn)的,但您當(dāng)前也不能從ADO中創(chuàng)建ODBC數(shù)據(jù)源。
    由于ADO現(xiàn)在? 最多的面向?qū)ο蟮臄?shù)據(jù)訪問模型,我們重點(diǎn)的介紹一下ADO 2.0對(duì)象模型。
    ADO 2.0對(duì)象模型是由七個(gè)對(duì)象組成的,它們中的大多數(shù)在功能上和RDO對(duì)象相似,只不過具有更強(qiáng)的功能性而已。
     Command對(duì)象:包含關(guān)于某個(gè)命令,例如查詢字符串、參數(shù)定義等的信息。Command對(duì)象在功能上和RDO的rdoQuery對(duì)象相似。
     Connection對(duì)象:包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息。Connection對(duì)象在功能上和RDO的rdoConnection對(duì)象是相似的,并且包含了關(guān)于結(jié)構(gòu)描述的信息。它還包含某些RDOEnvironment對(duì)象的功能, 例如transaction控件。
     Error對(duì)象:包含數(shù)據(jù)提供程序出錯(cuò)時(shí)的擴(kuò)展信息。Error對(duì)象在功能上和RDO的rdoError對(duì)象相似。
     Field對(duì)象:包含記錄集中數(shù)據(jù)的某單個(gè)列的信息。Field對(duì)象在功能上和RDO的rdoColumn對(duì)象相似。
     Parameter對(duì)象:包含參數(shù)化的Command對(duì)象的某單個(gè)參數(shù)的信息。該Command對(duì)象有一個(gè)包含其所有Parameter對(duì)象的Parameters集合。Parameter對(duì)象在功能上和RDO的rdoParameter對(duì)象相似。
     Property對(duì)象:包含某個(gè)ADO對(duì)象的提供程序定義的特征。沒有任何等同于該對(duì)象的RDO,DAO有一個(gè)相似的對(duì)象。
    ADO對(duì)象可以具有兩種屬性:
    Built-In屬性:ADO的“本地”屬性。也就是說,任何使用熟悉的MyObject.Property語法的新對(duì)象都可以立即使用的ADO中的屬性。Built-in屬性并不在某個(gè)對(duì)象的Properties集合中以Property對(duì)象的形式出現(xiàn),因此盡管您可以修改它們的值,您卻不能修改它們的特性或?qū)⑺鼈儎h除。
    Dynamic屬性:ADO的非本地屬性,它們是由下一級(jí)數(shù)據(jù)提供程序定義的。它們出現(xiàn)在合適的ADO對(duì)象的Properties集合中。例如,一個(gè)數(shù)據(jù)提供程序特有的屬性可能指明某個(gè)Recordset對(duì)象是支持事務(wù)還是支持更新。這些附加的屬性在Recordset的Properties集合中以Property對(duì)象的形式出現(xiàn)。Dynamic屬性只能用MyObject.Properties(0)或MyObject.Properties("Name")語法通過集合來引用。不同的數(shù)據(jù)提供程序可能提供一個(gè)或多個(gè)特殊的屬性,來處理提供程序特有的操作。
     Recordset對(duì)象:Recordset對(duì)象包含某個(gè)查詢返回的記錄,以及那些記錄中的游標(biāo)。Recordset對(duì)象在功能上和RDO的rdoResultset對(duì)象相似。可以在不用顯式地打開Connection對(duì)象的情況下,打開一個(gè)Recordset(例如,執(zhí)行一個(gè)查詢)。
    不過,如果您選擇創(chuàng)建一個(gè)Connection對(duì)象,您就可以在同一個(gè)連接上打開多個(gè)Recordset對(duì)象。
    包含在DAO和RDO模型中的許多功能被合并為單個(gè)對(duì)象,這樣就生成了一個(gè)簡(jiǎn)單得多的對(duì)象模型。然而,由于這個(gè)原因,起初可能會(huì)覺得找到合適的ADO對(duì)象、集合、屬性、方法,或事件非常困難。與DAO和RDO不同的是,盡管ADO對(duì)象是分層結(jié)構(gòu)的,但在分層結(jié)構(gòu)范圍之外也是可以創(chuàng)建的。
    不過,也應(yīng)當(dāng)注意,ADO當(dāng)前并不支持DAO的所有功能。ADO主要包括RDO風(fēng)格的功能性,以便和OLE DB數(shù)據(jù)源交互,另外還包括遠(yuǎn)程和DHTML技術(shù)。
    最后,我們?cè)俸?jiǎn)單的介紹一下OLE DB。
    OLE DB是COM(COM是微軟提出的一種中間件模型,從COM到DCOM,再到COM+)模型的數(shù)據(jù)庫接口。OLD DB是一系列的接口集合。是新的低層接口,它介紹了一種“通用的”數(shù)據(jù)訪問方法。也就是說,OLE DB并不局限于TóúI、AM?甚至關(guān)系數(shù)據(jù)源,但是它能夠處理任何類型的數(shù)據(jù)。OLE DB向應(yīng)用程序提供一個(gè)統(tǒng)一的數(shù)據(jù)訪問方法,而不考慮它們的格式和存儲(chǔ)方法。在實(shí)際應(yīng)用中,這種多樣性意味著可以訪問駐留在電子數(shù)據(jù)表、文本文件甚至郵件服務(wù)器,諸如 Microsoft Exchang中的數(shù)據(jù)。