邱暢,王濤
(河南省永城市人民醫(yī)院,河南 永城 476600)
基于VC的數(shù)據(jù)庫(kù)編程設(shè)計(jì)與實(shí)現(xiàn)
邱暢,王濤
(河南省永城市人民醫(yī)院,河南 永城 476600)
摘要:VC工具具有較為強(qiáng)大的編程性能,在實(shí)際編程中發(fā)揮重要的作用,備受編程人員所歡迎。在計(jì)算機(jī)技術(shù)和信息技術(shù)不斷發(fā)展的當(dāng)下,對(duì)編程人員的技能提出更高需求,只有充分掌握VC技術(shù),才能更好的完成數(shù)據(jù)庫(kù)編程工作。通過(guò)對(duì)基于VC的數(shù)據(jù)庫(kù)編程設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行研究分析,希望能夠?yàn)橄嚓P(guān)程序設(shè)計(jì)人員提供一定的理論借鑒。
關(guān)鍵詞:VC;數(shù)據(jù)庫(kù)編程;設(shè)計(jì)研究
前言
當(dāng)今時(shí)期正處于計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的時(shí)期,廣泛應(yīng)用于社會(huì)多個(gè)領(lǐng)域中,極大程度的改變了人們生活生產(chǎn)方式。在信息化和數(shù)字化的當(dāng)今時(shí)代,很多計(jì)算機(jī)編程語(yǔ)言例如C語(yǔ)言、JAVA受到行業(yè)人士的歡迎,很多程序開(kāi)發(fā)都會(huì)利用到編程語(yǔ)言。比如說(shuō)數(shù)據(jù)庫(kù)編程的設(shè)計(jì),基于vc開(kāi)發(fā)工具的支持,為編程人員帶來(lái)極大便利。
1VC數(shù)據(jù)庫(kù)編程設(shè)計(jì)ODBC方式
開(kāi)放數(shù)據(jù)庫(kù)連接(Open Database Connectivity,ODBC)是微軟公司開(kāi)放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。Microsoft也是以此作為核心考慮。ODBC屬于ADO的前身技術(shù),是Microsoft引進(jìn)的一種接口技術(shù)。編程人員進(jìn)行數(shù)據(jù)庫(kù)內(nèi)容訪問(wèn)階段,利用開(kāi)放數(shù)據(jù)庫(kù)連接(ODBC)可以以非語(yǔ)言的形式實(shí)施操作,更加簡(jiǎn)單便捷[1]。同時(shí),利用ODBC,編程人員在進(jìn)行DBF文件、或者Access Basic所獲取的數(shù)據(jù)信息時(shí),不再要求具備Xbase程序的專業(yè)設(shè)計(jì)語(yǔ)言。同Windows較為相似的是,開(kāi)放數(shù)據(jù)庫(kù)連接(ODBC)同樣可以利用DLL中的驅(qū)動(dòng)程序,實(shí)現(xiàn)任務(wù)的完成。一般情況下,開(kāi)放數(shù)據(jù)庫(kù)連接(ODBC)可以提供兩種驅(qū)動(dòng)程序,分別是設(shè)計(jì)語(yǔ)言的功用接口和數(shù)據(jù)庫(kù)管理器的專業(yè)語(yǔ)言。兩種驅(qū)動(dòng)程序具有一定的相似之處,都能夠使Visual C++調(diào)用數(shù)據(jù)庫(kù)內(nèi)容。在Visual C++中,很多數(shù)據(jù)庫(kù)類都是經(jīng)過(guò)MPC類庫(kù)確定定義。如果編程階段使用ODBC,編程人員常常會(huì)利用CRecordSet(記錄集類)、CRecordView(可視記錄集類)、以及CDatabase(數(shù)據(jù)庫(kù)類)。CRecordSet(記錄集類)對(duì)象可以根據(jù)數(shù)據(jù)源進(jìn)而提供相應(yīng)的記錄集;CRecordView(可視記錄集類)對(duì)象利用控制的形式使數(shù)據(jù)庫(kù)記錄信息顯示出來(lái),此視圖可以直接與CRecordSet(記錄集類)對(duì)象中表視圖連接;CDatabase(數(shù)據(jù)庫(kù)類)對(duì)象能夠有效提供出數(shù)據(jù)源的連接通道,可以方便編程人員開(kāi)展數(shù)據(jù)源操作。
1.1數(shù)據(jù)鏈接
CRecordSet(記錄集類)可以對(duì)某種成員變量關(guān)系進(jìn)行定義,例如說(shuō)m_pDatabase:Cdatabasc*m_pDatabase,此指針可以指向相應(yīng)數(shù)據(jù)庫(kù)類。如果在Open()函數(shù)之前調(diào)用 CRecordSet(記錄集類)對(duì)象,然后將打開(kāi)的CDatabase類對(duì)象指針信息送達(dá)m_pDatabase,進(jìn)而可以共享相同的CDatabase類對(duì)象。
1.2查詢記錄
通常情況下,利用OBDC進(jìn)行記錄的查詢,主要選擇CRecordSet::Requery()函數(shù)、以及CRecordSa::Open()成員函數(shù)。需要優(yōu)先使用CRecordSa::Open()函數(shù)獲取記錄集,然后才可以運(yùn)用CRecordSet類對(duì)象。如果已經(jīng)使用CRecordSa::Open()函數(shù),然后開(kāi)展查詢工作時(shí),即可使用CRecordSet::Requery()函數(shù)。特別強(qiáng)調(diào)的是,在實(shí)際的調(diào)動(dòng)CRecordSet::Open()函數(shù)階段,編程人員如果已經(jīng)成功打開(kāi)一個(gè)m_pDatabase成員變量,也就是CDatabase類對(duì)象指針發(fā)送到CRecordSet類對(duì)象中的變量,那么必須建立相應(yīng)的ODBC連接,同時(shí)保證連接基于此數(shù)據(jù)庫(kù)對(duì)象;或者m_pDatabase為空指針,則需要立刻建立新的CDatabase類對(duì)象,并且保證其能夠與缺省數(shù)據(jù)源相連接,之后初始化操作CRecordSet類對(duì)象??梢岳肎etDefaultConnect()函數(shù)進(jìn)行獲取。如果未曾發(fā)現(xiàn)指定的參數(shù),則程序止咳利用所缺省的SQL數(shù)據(jù),也就是GetDefaultSQL0函數(shù)中的SQL實(shí)現(xiàn)操作[2]。
2VC數(shù)據(jù)庫(kù)編程設(shè)計(jì)ADO方式
首先,需要明確OLE—DB概念,OLE—DB也就是利用部件的對(duì)象模型COM,作為一種訪問(wèn)數(shù)據(jù)的接口。同所有COM對(duì)象一致的是,也可以對(duì)OLE—DB的任何一個(gè)對(duì)象進(jìn)行查詢、撤銷、或者是創(chuàng)建??梢岳锰峁┱邅?lái)表示OLE—DB的對(duì)象來(lái)源,Visual C++軟件包括了各類OLE—DB提供者,也可以是廠家升級(jí)相關(guān)數(shù)據(jù)庫(kù)的產(chǎn)品而提供的。OLE—DB具有更為明顯的優(yōu)勢(shì),主要是任何一個(gè)Visual Studio產(chǎn)品都能夠與同一個(gè)提供者進(jìn)行結(jié)合,比如說(shuō)Visual Basi、Visual J++、Visual C++、以及Visual InterDe等等。此外,OLE—DB還能夠依賴事件,同樣與其他COM對(duì)象具有一致性??傊?,上述事件能夠自動(dòng)闡述何時(shí)更新數(shù)據(jù)庫(kù)表,顯示其他編程中所生成的新項(xiàng)數(shù)據(jù),也可以是所請(qǐng)求的表在何時(shí)準(zhǔn)備好,方便用戶查看[3]。
ADO不僅能夠利用VC的強(qiáng)大功能,同時(shí)能夠方便操作,可以將ADO模式數(shù)據(jù)庫(kù)的訪問(wèn)作為實(shí)例分析,進(jìn)而詳細(xì)說(shuō)明VC環(huán)境下的數(shù)據(jù)庫(kù)具體應(yīng)用。ADO具體編程方式如下所示:
2.1應(yīng)用預(yù)處理指令#import
#import” C:/Program Fildes/ Common Files/ System/ A-DO/ msado15.
Dll/ no_namespace rename(“EOF”,“BndOfFile”)
編程人員在具體的程序編譯階段,VC++所讀出的msadol5.dll含有的類型庫(kù)信息,會(huì)自動(dòng)產(chǎn)生2個(gè)此類型庫(kù)里的頭文件、以及msadol5.th以及msadol15.tli兩個(gè)實(shí)現(xiàn)文件。ADO所有對(duì)象和方法,都由上述兩個(gè)文件所定義,同時(shí)還包括一些常量等。
2.2利用讀取msado-l5.dll所包括的類型庫(kù)信息,也可以利用MFC里的CIDispatchDriver,然后建立一個(gè)同COleDispatch-Driver相關(guān)的派生類,最后利用其對(duì)ADO對(duì)象調(diào)用。
2.3可以直接使用COM提供的AP,可以使用下列代碼:
CLSID clsid;
HRESULT hr=::CLSID FromProglD ( L”ADODB.
Connemction”,
& dsid);
If (FAILED (hr) )
{…}
:CoCreatelmtance (clsid,NULL,CLSCTX_SERVER,
ID_Idispatch,(void**)
& pDispatch);
If (FAILED ( hr ) )
{…}
3總結(jié)
通過(guò)上述能夠看出,基于VC的數(shù)據(jù)庫(kù)編程主要采用ADO的設(shè)計(jì)方式,有利于促進(jìn)數(shù)據(jù)局基本工程的有效實(shí)現(xiàn),同時(shí)能夠合理發(fā)揮出VC的最大性能,更加方便編程人員操作,保證程序開(kāi)發(fā)的合理性和有效性。因此,該設(shè)計(jì)方法相仿合理,是一種非常理想的數(shù)據(jù)庫(kù)編程方法,具有一定的應(yīng)用空間。
參考文獻(xiàn):
[1]曹林林,張恒璟.基于VC6.0平臺(tái)的水準(zhǔn)網(wǎng)平差數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪工程,2014,23(6):71-74.
[2]李艷.數(shù)據(jù)庫(kù)編程接口及其VC++應(yīng)用程序設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2014(4):182-182.
[3]秦筱瑞,趙高建.基于VC實(shí)現(xiàn)的數(shù)據(jù)庫(kù)備份恢復(fù)工具[J].信息通信,2014(9):80-82.
中圖分類號(hào):P237
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1671-1602(2016)12-0039-02