国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

五種VC++數據庫開發技術的比較

2019-11-17 05:18:13
字體:
來源:轉載
供稿:網友
從功能簡單的數據庫(如Jet Engine)到復雜的大型數據庫系統(如Oracle),VC++6.0都提供了一些編程接口。本文主要介紹以下五種:

1.ODBC API;

2.MFC ODBC類;

3.MFC DAO類;(數據訪問對象)

4.MFC的OLE/DB;

5.ActiveX數據對象(ADO)。

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類在實際開發中應用最廣,因為它功能豐富,操作相對簡便。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數據庫,應用范圍相對固定。

4.OLE DB
OLE DB在數據提供程序和用戶之間提供了靈活的組件對象模型(COM)接口,這種靈活性有時會使得操作復雜化。OLE DB框架定義了應用的三個基本類。

數據提供程序Data PRovider:擁有自己的數據并以表格形式顯示數據的應用程序。提供OLE DB的行集COM接口,期顯示范圍可以從單一數據表格的簡單提供者知道更復雜的分布式數據庫系統。

使用者Consumers:使用OLE DB接口對存儲在數據提供程序中的數據進行控制的應用程序。用戶應用程序歸為使用類。

服務提供程序Service Provider:是數據提供程序和使用者的組合。服務提供程序沒有自己的數據,但使用

OLE DB使用者接口來訪問存儲在數據提供程序中的數據。然后,服務提供程序通過打開數據提供程序接口使得數據對使用者有效。服務提供程序常用于向應用程序提供高層次服務,比如高級分布式查詢。

OLE DB編程時,用戶使用組件對象開發應用程序。這些組件有:

 枚舉器:用于列出可用的數據源;

 數據源:代表單獨的數據和服務提供程序,用于創建對話;

 對話:用于創建事務和命令;

 事務:用于將多個操作歸并為單一事務處理;

 命令:用于向數據源發送文本命令(SQL),返回行集;

 錯誤:用于獲得錯誤信息。

5.ActiveX數據對象(ADO)是微軟提供的面向對象的接口,與OLE DB類似,但接口更簡單,具有更廣泛的特征數組和更高程度的靈活性。ADO基于COM,提供編程語言可利用的對象,除了面向VC++,還提供面向其他各種開發工具的應用,如VB,VJ等。ADO在服務器應用方面非常有用,非凡是對于動態服務器頁面asp(Active Server Page)。

ADO對象結構類似于OLE DB,但并不依靠對象層次。大多數情況下,用戶只需要創建并只使用需要處理的對象。下面的對象類組成了ADO接口。

 Connection:用于表示與數據庫的連接,以及處理一些命令和事務。

 Command:用于處理傳送給數據源的命令。

 Recordset:用于處理數據的表格集,包括獲取和修改數據。

 Field:用于表示記錄集中的列信息,包括列值和其他信息。

 Parameter:用于對傳送給數據源的命令之間往返傳送數據。

 Property:用與操作在ADO中使用的其他對象的具體屬性。

 Error:用于獲得可能發生的錯誤的具體信息。

在VC++使用ADO需要進行COM操作,具體方法在此就不贅述了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 谢通门县| 六枝特区| 大田县| 茂名市| 三穗县| 泸溪县| 扎囊县| 循化| 武定县| 襄汾县| 阿巴嘎旗| 黎城县| 卢氏县| 内江市| 崇阳县| 松江区| 宣化县| 巫溪县| 九龙城区| 周口市| 沂源县| 隆安县| 个旧市| 安乡县| 和静县| 囊谦县| 漳平市| 泾川县| 宿迁市| 定安县| 台北县| 册亨县| 汾西县| 县级市| 冕宁县| 林甸县| 犍为县| 盐亭县| 江孜县| 宁城县| 恭城|