開放式數(shù)據(jù)庫互連(ODBC)的目的是提供一個公" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 信息時代 > 數(shù)據(jù)庫嵌入式鏈接對象(數(shù)據(jù)庫)

數(shù)據(jù)庫嵌入式鏈接對象(數(shù)據(jù)庫)

時間:2022-11-18 14:30:01 | 來源:信息時代

時間:2022-11-18 14:30:01 來源:信息時代

    數(shù)據(jù)庫嵌入式鏈接對象 : 一種基于組件(COM)的數(shù)據(jù)訪問接口,用來訪問各種數(shù)據(jù)源,主要由數(shù)據(jù)源提供商來實現(xiàn),如Oracle、SQL Server、Access等。
開放式數(shù)據(jù)庫互連(ODBC)的目的是提供一個公用的API,用來訪問數(shù)據(jù)庫,而不用考慮數(shù)據(jù)庫的內(nèi)部細節(jié)、語言和表的組織。但是,隨著時間的推移,人們發(fā)現(xiàn),面對新的數(shù)據(jù)驅(qū)動應(yīng)用程序的設(shè)計和構(gòu)造方法,ODBC越來越無法成功地滿足需要。為進一步提高數(shù)據(jù)庫API的通用性,微軟提出OLE DB標準。
1. OLE DB的結(jié)構(gòu)
OLE DB是作為一種組件技術(shù)而設(shè)計的,它將傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)劃分為多個邏輯組件,這些組件之間相對獨立又相互通信。這種多層組件模型以COM作為橋梁,在COM橋的一側(cè)是用于保留數(shù)據(jù)的服務(wù)器組件,另一側(cè)是了解如何連接和請求數(shù)據(jù)的客戶端組件。前者稱作OLE DB數(shù)據(jù)提供者(data provider),提供數(shù)據(jù)存儲的軟件組件,如普通的文本文件、主機上的復(fù)雜數(shù)據(jù)庫、電子郵件等數(shù)據(jù)的存儲軟件組件,有的文檔把這些軟件組件的開發(fā)商也稱為數(shù)據(jù)提供者: 后者稱作OLE DB數(shù)據(jù)使用者(data consumer),如使用ActiveX數(shù)據(jù)對象(ADO)的應(yīng)用程序或網(wǎng)頁等。也就是說,使用者和提供者都是COM對象,并能夠通過一套COM接口互相通信。這種基于COM的通信可被概括為在抽象對象(Data Source、Session、Command和Rowset)上執(zhí)行的操作(使用者連接到DataSource、打開Session、發(fā)出Command并返回數(shù)據(jù)Rowset),能提供對所有類型的數(shù)據(jù)的訪問,包括關(guān)系型、非關(guān)系型和層次結(jié)構(gòu)性數(shù)據(jù),甚至能在離線的情況下存取數(shù)據(jù)。
除了提供者和使用者,OLE DB模型還包括第三個元素OLE DB服務(wù)組件(service component)。服務(wù)組件可以執(zhí)行數(shù)據(jù)提供者以及數(shù)據(jù)使用者之間數(shù)據(jù)傳遞的工作。數(shù)據(jù)使用者向數(shù)據(jù)提供者要求數(shù)據(jù)時,通過OLE DB服務(wù)組件的查詢處理器執(zhí)行查詢工作,而查詢到的結(jié)果則由指針引擎來管理。即服務(wù)也是一種COM組件,監(jiān)督使用者和提供者之間的所有通信,用于處理返回給使用者的“行集”。
OLE DB模型結(jié)構(gòu)如圖1所示。


圖1 OLE DB模型結(jié)構(gòu)示意圖


這一模型可以增強系統(tǒng)的可伸縮性和總體性能。比如,ADO對中間OLE DB服務(wù)進行擴展,可以讓數(shù)據(jù)使用者和數(shù)據(jù)提供者并不總是連接。一旦建立連接,便可以發(fā)出指定的查詢,獲取記錄并將其放至內(nèi)存中的存儲庫,然后從數(shù)據(jù)源斷開連接。在脫機狀態(tài)下可以處理這些記錄,并在需要時重新連接或提交更改。這種工作方式在.NET下有望進一步得到改善。
與ODBC相比,OLE DB對數(shù)據(jù)物理結(jié)構(gòu)的依賴更少;此外,它不必嚴格基于SQL,OLE DB命令可以是SQL語句,也可以是其他的一些東西,可以將它們看作以任何能夠為目標提供者理解的語法寫成的文本字符串。
OLE DB采用C++的概念進行設(shè)計,以盡可能提高中間層模塊數(shù)據(jù)訪問的性能。在C++應(yīng)用程序中使用OLE DB調(diào)用,經(jīng)過的代碼層次較少,可以比較直接地到達數(shù)據(jù)。也正因為如此,OLE DB不能直接在Visual BASIC或ASP中使用。
在開發(fā)基于OLE DB的應(yīng)用程序時,由于直接使用OLE DB的對象和接口開發(fā)數(shù)據(jù)庫應(yīng)用程序需要書寫大量的代碼,為了簡化程序設(shè)計,Visual C++提供了ATL模板用于開發(fā)OLE DB數(shù)據(jù)應(yīng)用程序和數(shù)據(jù)提供程序。ATL模板分為數(shù)據(jù)提供程序的模板和數(shù)據(jù)使用程序的模板。使用ATL模板前先創(chuàng)建應(yīng)用框架,再加入ATL產(chǎn)生的模板類,然后在應(yīng)用中使用產(chǎn)生的數(shù)據(jù)訪問對象。
利用ATL模板產(chǎn)生數(shù)據(jù)使用程序較為簡單,但適用性不廣,不能動態(tài)適應(yīng)數(shù)據(jù)庫的變化??梢允褂肕FC OLE DB類直接生成數(shù)據(jù)使用程序。
2. OLE DB的常用類
(1)會話類:
CDataSource類: CDataSource與OLE DB的數(shù)據(jù)源對象相對應(yīng)。這個類代表了OLE DB數(shù)據(jù)提供程序和數(shù)據(jù)源之間的連接。只有當數(shù)據(jù)源的連接被建立之后,才能產(chǎn)生會話對象,可以調(diào)用Open()來打開數(shù)據(jù)源的連接。
CSession類: CSession所創(chuàng)建的對象代表了一個單獨的數(shù)據(jù)庫訪問的會話。一個用CDataSource類產(chǎn)生的數(shù)據(jù)源對象可以創(chuàng)建一個或者多個會話,要在數(shù)據(jù)源對象上產(chǎn)生一個會話對象,需要調(diào)用函數(shù)Open()來打開。同時,會話對象還可用于創(chuàng)建事務(wù)操作。
CEnumeratorAccessor類: CEnumeratorAccessor是用來訪問枚舉器查詢后所產(chǎn)生的行集中可用數(shù)據(jù)提供程序的信息的訪問器,可提供當前可用的數(shù)據(jù)提供程序和可見的訪問器。
(2)訪問器類:
CAccessor類:CAccessor代表與訪問器的類型。當用戶知道數(shù)據(jù)庫的類型和結(jié)構(gòu)時,可以使用此類。它支持對一個行集采用多個訪問器,并且,存放數(shù)據(jù)的緩沖區(qū)是由用戶分配的。
CDynamicAccessor類: CDynamicAccessor用來在程序運行時動態(tài)地創(chuàng)建訪問器。當系統(tǒng)運行時,可以動態(tài)地從行集中獲得列的信息,可根據(jù)此信息動態(tài)地創(chuàng)建訪問器。
CManualAccessor類: CManualAccessor用在程序運行時將列與變量綁定或者是將參數(shù)與變量綁定。
(3)行集類:
CRowSet類: CRowSet封裝了行集對象和相應(yīng)的接口,并且提供了一些方法用于查詢、設(shè)置數(shù)據(jù)等。可以用Move()等函數(shù)進行記錄移動,用GetData()函數(shù)讀取數(shù)據(jù),用Insert()、Delete()、SetData()來更新數(shù)據(jù)。
CBulkRowset類:CBulkRowset用于在一次調(diào)用中取回多個行句柄或者對多個行進行操作。
CArrayRowset類: CArrayRowset提供用數(shù)組下標進行數(shù)據(jù)訪問。
在打開數(shù)據(jù)源,建立會話和行集對象后就可以獲取數(shù)據(jù)和數(shù)據(jù)類型了。所獲取的數(shù)據(jù)類型取決于所用的存取程序,可能需要綁定列。
(4)命令類:
CTable類: CTable用于對數(shù)據(jù)庫的簡單訪問,用數(shù)據(jù)源的名稱得到行集,從而得到數(shù)據(jù)。
CCommand類: CCommand用于支持命令的數(shù)據(jù)源??梢杂肙pen()函數(shù)來執(zhí)行SQL命令,也可以Prepare()函數(shù)先對命令進行準備,對于支持命令的數(shù)據(jù)源,可以提高程序的靈活性和健壯性。

74
73
25
news

版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉