- 相關推薦
應用vc進行數據庫編程與分析
一、VC作為數據庫編程工具必要性
實際上從方便的角度講,VisuaIBa血和Delphi這樣的RAD環境更加適合于數據庫開發,應用這些軟件可以在使程序設計非常地容易。對大多數數據庫應用來說,選擇VC++也許并不適宜。但是需要考慮到,單純的數據庫管理必須要和其它的功能結合才能發揮更大的作用,而數據庫軟件并不輕易地支持這些拓展的功能。由于VC對底層強大的支持,其高效的率的代碼結構,編寫的數據庫相關應用程序就會有規模小、提供底層訪問并能提供實時訪問的特點。比如編寫數據庫實用程序及驅動程序時,在硬盤較小或內存有限制時,Visualc++提供了無價無限的工具。
二、VC數據庫編程方法分析
(一)ODBC的模式
Mα'Os'Ofi最初是以開放數據庫互連(ODBC)為目標的,ODBC是Micr'Os'Oft引進的一種早期數據庫接口技術,是ADO的前身。
VisualC++的MFC類庫定義了幾個數據庫類。在利用ODBC編程時,經常要使用到CDatabase(數據庫類),CRec'OrdSet(記錄集類)和CRe∞'rdView(可視記錄集類)。其中:CDatabase類對象提供了對數據源的連接,通過它你可以對數據源進行操作。CRecordView類對象能以控制的形式顯示數據庫記錄。這個視圖是直接連到一個CRec'OrdSet對象的表視圖。CRec'OrdSet類對象提供了從數據源中提取出的記錄集。
1數據鏈接
在CRecordSet類中定義了一個成員變量m_pDatabase:CDatabase*m_pDatabase;
它是指向對象數據庫類的指針。如果在CRec'OrdSet類對象調用OpenO函數之前,將一個已經打開的CDatabase類對象指針傳給m-pDatabase,就能共享相同的CDatabase類對象。
2.查詢記錄
查詢記錄使用CRec'OrdSet::OpenO和CRec'OrdSet::R叫ueryO成員函數。在使用CRecordSet類對象之前,必須使用CRec'OrdSet::OpenO函數來獲得有效的記錄集。一旦已經使用過CReoordSet::OpenO函數,再次查詢時就可以應用CRecordSet::RequeryO函數。在調用αecordSet::句enO函數時,如果已經將一個已經打開的CDatabase對象指針傳給CRec'OrdSet類對象的m_pDatabase成員變量,則使用該數據庫對象建立ODBC連接;否則如果m_pDatabase為壁指針,就新建一個CDatabase類對象并使其與缺省的數據源相連,然后進行αec'OrdSet類對象的初始化。缺省數據源由GetDefaultC'OnnectO函數獲得。
如果沒有指定參數,程序則使用缺省的SQL語句,即對在GetDefaultSQL()函數中指定的SQL語句進行操作。(二)ADO的模式
ADO既能應用到VC的強大功能,而且使用起來又比較方便,本文以ADO方式數據庫訪問為例,展示VC下如何進行數據庫應用。下面是使用其編程的方法。
1.使用預處理指令#import
#import"C:飛ProgramFiles\C'Omm'OnFiles飛System'山DO恤sad'015.
dll"\n'O_namespaceren缸丑叭"EOF","EndOfFile")
程序在編譯過程中,VC++會讀出msadol5.dll中的類型庫信息,自動產生兩個該類型庫的頭文件和實現文件msad'015.tlh和msad'015.tli(在您的Debug或Release目錄下〉。在這兩個文件里定義了ADO的所有對象和方法,以及一些枚舉型的常量等。我們的程序只要直接調用這些方法就行了,與使用MFC中的COleDispatchDriver類調用Aut'Omati'On對象十分類似。
2.使用MFC中的CIDispatchDriver就是通過讀取msad'015.dll中的類型庫信息,建立一個COleDispatchDriver類的派生類,然后通過它調用ADO對象。
3直接用COM提供的API如使用如下代碼zCLSIDclsid;
HRESULThr=::CLSIDFromProgID(L"ADODB.C'Onnecti'On",&clsid);
if(FAlLED(hr?{...J
:CoCr四teIn民ance(clsid,NULL,CLSCTX_SERVER
IID_IDispatch,(v'Oid叫&pDispatch);
if(FAlLED(hr
{...J
以上三種方法,第一和第二種類似,可能第一種好用一些,第三種編程可能最麻煩。但可能第三種方法也是效率最高的,程序的尺寸也最小,并且對ADO的控制能力也最強。當需要繞過ADO而直接調用OLEDB底層的方法時,就一定要使用第三種方法。ADO編程的關鍵,就是熟練地運用ADO提供的各種對象('0ect)、方法(method)、屬性(prop町ty)和容器(00llecti'On)。
【應用vc進行數據庫編程與分析】相關文章:
VC++編程在步進電機控制中的應用08-08
基于Mschart的數據庫圖表應用編程09-19
非Access數據庫在VB中的編程及應用06-27
JDBC數據庫編程的研究10-18
VB與MATLAB混合編程在流量標定系統數據庫中的應用07-23
淺談關于計算機移動數據庫的應用分析07-07
對信息技術在旅游業中應用的現狀進行分析08-09