ODBC OLEDB ADO等數據庫訪問技術

花了點時間理了一下數據庫訪問技術相關的東西,一般地,一個數據庫產品的發佈後,相應地,會爲開發者提供一套訪問改數據庫的接口,比如MySql提供的C API,可以通過這些數據庫產品本身的API進行數據庫操作。

比如:通過API mysql_init() mysql_real_connect()連接數據庫,其它的數據庫產品也相應的提供了類似的API。問題是,這樣直接通過底層數據庫產品的API開發應用

加大了開發難度,換了數據庫又要學習新的API,不適應快速發展的軟件開發模式,也降低了軟件的可重用性。爲此,產生了許多標準的數據庫訪問技術。

1.ODBC Open Database Connectivity

ODBC開放數據互聯技術提供了訪問關係型數據庫的統一接口,使用ODBC API可以與任何具有ODBC驅動程序的關係型數據庫交互,並且大部分數據庫都提供了

ODBC驅動程序。

比如: ODBC API連接數據庫如下

SQLRETURN SQLConnect( SQLHDBC ConnectionHandle,    

                                                    SQLCHAR * ServerName,   

                                                    SQLSMALLINT NameLength1,    

                                                    SQLCHAR * UserName,    

                                                    SQLSMALLINT NameLength2,    

                                                    SQLCHAR * Authentication,    

                                                    SQLSMALLINT NameLength3);

ODBC的體系結構如下:

 

2.DAO Data Access Object

DAO 最早是微軟爲了Microsoft Jet數據庫引擎提供給Microsoft Access所使用,現在也支持其他數據庫,MFC的CDaoRecordset等類就是基於對DAO的封裝產生的。

3.RDO Remote Data Object

RDO直接調用ODBC API可以爲應用程序提供較好的性能。

4.OLE DB  Object Linking and Embedding  Database

OLE DB對ODBC進行了擴展,成爲關係型和非關係型數據庫訪問的接口。OLE DB 定義了一組 COM 接口,對各種數據庫管理系統服務進行封裝,

並允許創建軟件組件,實現這些服務。

5.ADO ActiveX Data Object

ADO建立在OLE DB之上,本身是OLE DB的客戶程序,使用ADO的程序都間接的使用OLE DB,所以,ADO可以看做是面向對象的OLE DB技術,是高層的

編程接口,簡化了OLE DB訪問數據庫。使用VC++ J進行ADO編程時,需要初始化COM環境

調用CoInitialize(NULL),以及釋放COM環境CoUninitialize(),MFC中可調用AfxOleInit()初始化Ole環境。

使用ADO操作數據庫簡單高效,但ADO操作時一定要使用try-catch捕獲異常。

只是簡單了理清了幾種數據庫的訪問方式,雖然有的可能已經不常用了,但知道了這些就能更好的先專攻某種主流技術而不會雲裏霧裏的,那種感覺實在太糟糕了。

下一步可能深入研究一下OLE DB/ADO,努力。

只是簡單的理了下方向性的東西,文章中若有錯誤,歡迎指正,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章