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

字號:

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