用VC++開發Oracle數據庫應用程序詳解2

 VC++開發Oracle數據庫應用程序詳解

使用ODBC中間件訪問數據庫

1.ODBC工作原理

ODBCOpen Database Connect(開放數據庫互連)的簡稱,它是由Microsoft公司於1 991年提出的一個用於訪問數據庫的統一界面標準,是應用程序和數據庫系統之間的中間件。它通過使用相應應用平臺上和所需數據庫對應的驅動程序與應用程序 的交互來實現對數據庫的操作,避免了在應用程序中直接調用與數據庫相關的操作,從而提供了數據庫的獨立性。

ODBC主要由驅動程序和驅動程序管理器組成。驅動程序是一個用以支持ODBC函數 調用的模塊(WIN95下通常是一個DLL),每個驅動程序對應於相應的數據庫,當應用程序從基於一個數據庫系統移植到另一個時,只需更改應用程序中由 ODBC管理程序設定的與相應數據庫系統對應的別名即可。驅動程序管理器(包含在ODBC32.DLL)可鏈接到所有ODBC 應用程序中,它負責管理應用程序中ODBC函數與DLL中函數的綁定。

ODBC使用層次的方法來管理數據庫,在數據庫通信結構的每一層,對可能出現依賴數據庫產品自身特性的地方,ODBC都引入一個公共接口以解決潛在的不一致性,從而很好地解決了基於數據庫系統應用程序的相對獨立性,這也是ODBC一經推出就獲得巨大成功的重要原因之一。

從結構上分,ODBC分爲單束式和多束式兩類。

單束式驅動程序

單束式驅動程序介於應用程序和數據庫之間,像中介驅動程序一樣數據提供一個統一的數據訪問方式。

當用戶進行數據庫操作時,應用程序傳遞一個ODBC函數調用給ODBC驅動程序管理器, 由ODBC API判斷該調用是由它直接處理還是送交驅動程序執行。

可見,單束式驅動程序本身是一個數據庫引擎,由它直接可完成對數據庫的操作,儘管該數據庫可能位於網絡的任何地方。

多束式驅動程序

多束式驅動程序負責在數據庫引擎和客戶應用程序之間傳送命令和數據,它本身並不執行數據處理操作,而用於遠程操作的網絡通信協議的一個界面。

前端應用程序提出對數據庫處理的請求,該請求轉給ODBC驅動程序管理器,驅動程序 管理器依據請求的情況,就地完成或傳給多束驅動程序。多束式驅動程序將請求翻譯爲特定廠家的數據庫通信接口(OracleSQLNet)所能理解的形 式並交於接口去處理,接口把請求經網絡傳送給服務器上的數據引擎。服務器處理完後把結果發回給數據庫通信接口 ,數據庫接口將結果傳給多束式ODBC驅動程序,再由驅動程序將結果傳給應用程序。

2.VC中使用ODBC

Visual C++中提供了CDatabaseCRecordsetCRecordViewCDBExceptionCFie ldExchange五個類,這些類封裝了ODBC SDK函數,從而使用戶可以無需瞭解SDK函數就可以很方便地操作支持ODBC的數據庫。

CDatabase類封裝了與數據庫建立連接、控制事務的提交和回滾及執行SQL語句的方法。

CRecordset類封裝了大部分操縱數據庫的方法,包括瀏覽、修改記錄、控制遊標移動、排序等操作。

CRecordView類提供了與Recordset對象相連接的視圖,可以建立視中的控件與數據庫數據的對應,同時支持移動遊標、修改記錄等操作。

CDBException類提供了對數據庫操作的異常處理,可以獲得操作異常的相關返回代碼。

CFieldExchange類提供了用戶變量與數據庫字段之間的數據交換,如果不需要使用自定義類型,將不用直接調用該類的函數,MFC Wizard將自動爲程序員建立鏈接。

兩種方法的比較

綜上所述,使用這兩種方法在Visual C++中都可以很方便地開發出基於Oracle數據庫的應用程序,同時,這兩種方法又各有其優缺點。ODBC由於有MFC強大的類庫支持而使得編程實現非 常方便,同時可移植性也很強,在異構數據庫之間移植也只需更改很少一部分程序。但是,由ODBC的實現機制我們可以看到,與PRO*C相比,應用程序需要 經過ODBC驅動程序管理器和ODBC驅動程序兩層,才能和數據庫通信接口建立聯繫,而PRO*C是直接與通信接口聯繫,因此建立在ODBC上應用程序的 執行效率會相對低一些。詳細參考http://wenku.it168.com/d_000666224.shtml

 

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