VC++數據庫開發技術比較

從功能簡單的數據庫(如Jet Engine)到複雜的大型數據庫系統(如oracle),VC++6.0都提供了一些編程接口。本文主要介紹如下五種: 1.ODBC API; 2.MFC ODBC類; 3.MFC DAO類;(數據訪問對象) 4.MFC的OLE/DB; 5.ActiveX數據對象(ADO)。sql

1.開放數據庫鏈接(ODBC API):提供了一個通用的編程接口,容許程序與多種不一樣的數據庫鏈接。它爲Oracle,SQL Server,MS Excel等都提供了驅動程序,使得用戶能夠使用SQL語句對數據庫進行直接的底層功能操做。在使用ODBC API時,用戶須引入的頭文件爲"sql.h","sqlext.h","sqltypes.h"。用ODBC API建立數據庫應用程序遵循必定的基本步驟: 第一步是分配ODBC環境,使一些內部結構初始化。完成這一步,須分配一個SQLHENV類型的變量在ODBC環境中作句柄使用。 第二步是爲將要使用的每個數據源分配一個鏈接句柄,由函數SQLALLocHandle()完成。 第三步是使用SQLConnect()把鏈接句柄與數據庫鏈接,能夠先經過SQLSetConnectAttr()設置鏈接屬性。 而後就能夠進行SQL語句的操做,限於篇幅,相關的函數就不具體介紹了,讀者能夠參考相關書籍。 操做完成後,用戶取回相應的結果,就能夠取消與數據庫的鏈接。 最後須要釋放ODBC環境。 ODBC API的特色是功能強大豐富,提供了異步操做,事務處理等高級功能,但相應的編程複雜,工做量大。數據庫

2.MFC ODBC類:MFC1.5後的版本里引入封裝了ODBC功能的類。經過這些類提供與ODBC的接口,使得用戶能夠不須處理ODBC API中的繁雜處理就能夠進行數據庫操做。主要的MFC ODBC類以下。 CDatabase類:一個CDatabase對象表示一個到數據源的鏈接,經過它能夠操做數據源。應用程序可以使用多個CDatabase對象:構造一個對象並調用OpenEx()成員函數打開一個鏈接。接着構造CRecordSet對象以操做鏈接的數據源,並向CDatabase對象傳遞記錄集構造程序指針。完成使用後用Close()成員函數銷燬CDatabase對象。通常狀況下並不須要直接使用CDatabase對象,由於CRecordSet對象能夠實現大多數的功能。可是在進行事務處理時,CDatabase就起到關鍵做用。事務(Transaction)指的是將一系列對數據源的更新放在一塊兒,同時提交或一個也不提交,爲的是確保多用戶對數據源同時操做時的數據正確性。 CRecordSet類:一個CRecordSet對象表明一個從數據源選擇的一組記錄的集合-記錄集。記錄集有兩種形式:snapshot和dynaset。前者表示數據的靜態視圖,後者表示記錄集與其餘用戶對數據庫的更新保持同步。經過CRecordSet對象,用戶能夠對數據庫中的記錄進行各類操做。 CRecordView類:CRecordView對象是在空間中顯示數據庫記錄的視圖。這種視圖是一種直接連到一個CRecordSet對象的格式視圖,它從一個對話框模板資源建立,並將CRecordSet對象的字段顯示在對話框模板的控件裏。對象利用DDX和RFX機制,使格式上的控件和記錄集的字段之間數據移動自動化,也就是說,用戶甚至不要編寫一行代碼就能夠實現簡單的數據庫記錄查看程序。編程

CDBException類:由Cexception類派生,以三個繼承的成員變量反映對數據庫操做時的異常: m_nRetCode:以ODBC返回代碼(SQL_RETURN)的形式代表形成異常的緣由。 m_strError:字符串,描述形成拋出異常的錯誤緣由。 m_strStateNativeOrigin:字符串,用以描述以ODBC錯誤代碼表示的異常錯誤。 MFC數據庫類成員函數都能拋出CDBException類型的異常,因此在代碼對數據庫進行操做後監測異常是正確作法。 MFC ODBC類在實際開發中應用最廣,由於它功能豐富,操做相對簡便。oracle

3.MFC DAO(數據訪問對象)編程:DAO用於和微軟的Access數據庫接口。在數據庫應用程序若是隻需與Access數據庫接口時,使用DAO編程較方便。其主要類以下。 CDaoWorkspace:CDaoWorkspace對象可讓一個用戶管理從登錄到離開期間,指定的密碼保護的數據庫會話全過程。大多數狀況下不要多個工做區也不要建立明確的工做區對象。由於在打開數據庫和記錄集對象時,它們能夠使用DAO缺省工做區。 CDaoDatabase:表明一個鏈接,相似上述CDatabase類。 CDaoRecordSet:用來選擇記錄集並操做,相似上述CRecordSet類。 CDaoRecordView:相似上述CRecordView類。 CDaoException:相似上述CDBException類。 CDaoTableDef:表示基本表或附加表的定義。每一個DAO數據庫對象包括一個稱爲TableDef的收集,包含全部存儲的DAO表定義對象。CDaoTableDef對象能夠用來控制表定義。 CDaoQueryDef:CDaoQueryDef對象表示了一個查詢定義(querydef)。 CDaoFieldExchange:支持數據庫類使用的DAO字段交換(DFX)例程。也可處理事務,相似MFC ODBC類。 MFC DAO僅用來支持Access數據庫,應用範圍相對固定。異步

相關文章
相關標籤/搜索