999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VC的數(shù)據(jù)庫(kù)應(yīng)用

2009-04-29 00:00:00謝厚亮劉偉躍
電腦知識(shí)與技術(shù) 2009年26期

摘要:該文對(duì)VC的數(shù)據(jù)庫(kù)編程特點(diǎn)進(jìn)行了分析,指出了它的優(yōu)勢(shì)所在。然后分析了兩種VC編程的模式,并且詳細(xì)給出了ADO方式的具體實(shí)例。最后進(jìn)一步指出VC下的ADO方式是一種較好的數(shù)據(jù)庫(kù)應(yīng)用方法。

關(guān)鍵詞:VC;數(shù)據(jù)庫(kù);ADO;ODBC;計(jì)算機(jī)應(yīng)用

中圖分類號(hào):TP311文章標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)26-7338-02

VC++作為Windows平臺(tái)上最優(yōu)秀的C++編程環(huán)境之一,它既能面向?qū)ο笥志哂幸恍┢渌奶攸c(diǎn)。雖然學(xué)習(xí)、應(yīng)用VC要了解很多Windows平臺(tái)的特性并且還要掌握ATL、COM等的知識(shí),難度比較大,但它仍然是一個(gè)對(duì)底層支持非常好的、必不可少的優(yōu)秀編程環(huán)境。特別是它的MFC編程方式:MFC是一個(gè)很大的、擴(kuò)展了的C++類層次結(jié)構(gòu),它能使開發(fā) Windows 應(yīng)用程序變得更加容易。在數(shù)據(jù)庫(kù)開發(fā)中,VC也是一個(gè)強(qiáng)大的工具,本文就是分析在VC環(huán)境下的數(shù)據(jù)庫(kù)開發(fā),希望能夠起到拋磚引玉的作用。

1 VC數(shù)據(jù)庫(kù)編程的特點(diǎn)

對(duì)于像dBASE IV,F(xiàn)oxPro,Oracle和Access這樣的產(chǎn)品是完全以數(shù)據(jù)庫(kù)管理為中心的,這些產(chǎn)品非常善于創(chuàng)建數(shù)據(jù)庫(kù)管理器。在應(yīng)用這些商業(yè)數(shù)據(jù)庫(kù)的時(shí)候,使用VisualBasic和Delphi等環(huán)境就可以協(xié)助來實(shí)現(xiàn)構(gòu)建這種管理器。實(shí)際上應(yīng)用這些軟件,編寫成熟的、用戶界面良好的、具有高速搜索能力的數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS非常的簡(jiǎn)單。所以實(shí)際上從方便的角度講,VisualBasic和Delphi這樣的RAD環(huán)境更加適合于數(shù)據(jù)庫(kù)開發(fā),應(yīng)用這些軟件可以在使程序設(shè)計(jì)非常地容易。對(duì)大多數(shù)數(shù)據(jù)庫(kù)應(yīng)用來說,選擇VC++也許并不適宜。

但是需要考慮到,單純的數(shù)據(jù)庫(kù)管理必須要和其它的功能結(jié)合才能發(fā)揮更大的作用,而數(shù)據(jù)庫(kù)軟件并不輕易地支持這些拓展的功能。這時(shí)為了實(shí)現(xiàn)各種復(fù)雜的功能,Visual C++就可以提供的一些重要東西。由于VC對(duì)底層強(qiáng)大的支持,其高效的率的代碼結(jié)構(gòu),編寫的數(shù)據(jù)庫(kù)相關(guān)應(yīng)用程序就會(huì)有規(guī)模小、提供底層訪問并能提供實(shí)時(shí)訪問的特點(diǎn)。比如編寫數(shù)據(jù)庫(kù)實(shí)用程序及驅(qū)動(dòng)程序時(shí),可以選擇Visual C++語(yǔ)言;又比如在硬盤較小或內(nèi)存有限制時(shí),Visual C++提供了無價(jià)無限的工具。

2 VC數(shù)據(jù)庫(kù)編程的方式

2.1 ODBC方式

Microsoft最初是以開放數(shù)據(jù)庫(kù)互連(ODBC)為目標(biāo)的, ODBC是Microsoft引進(jìn)的一種早期數(shù)據(jù)庫(kù)接口技術(shù),是ADO的前身。Microsoft引進(jìn)這種技術(shù)的一個(gè)主要原因是,以非語(yǔ)言專用的方式提供給程序員一種訪問數(shù)據(jù)庫(kù)內(nèi)容的簡(jiǎn)單方法。它使得編程人員在訪問DBF文件或Access Basic得到MDB文件中的數(shù)據(jù)時(shí),無需懂得Xbase程序設(shè)計(jì)語(yǔ)言。ODBC工作起來和Windows一樣,它用包含在DLL內(nèi)的驅(qū)動(dòng)程序完成任務(wù)。ODBC提供一套兩個(gè)驅(qū)動(dòng)程序:一個(gè)是數(shù)據(jù)庫(kù)管理器的語(yǔ)言,另一個(gè)為程序設(shè)計(jì)語(yǔ)言提供公用接口。允許Visual C++用標(biāo)準(zhǔn)的函數(shù)調(diào)用經(jīng)公用接口訪問數(shù)據(jù)庫(kù)的內(nèi)容,是這兩個(gè)驅(qū)動(dòng)程序的匯合點(diǎn)。當(dāng)然,還有其它和ODBC有關(guān)的實(shí)用程序類型的DLL。例如,一個(gè)這樣的DLL允許管理ODBC數(shù)據(jù)源。

2.2 ADO方式

要理解ADO方式需要首先了解OLE-DB的含義。顧名思義OLE-DB用OLE(或者更具體一點(diǎn),是部件對(duì)象模型COM)為數(shù)據(jù)訪問提供一套接口。就像任何其它的COM對(duì)象一樣,可以查詢、創(chuàng)建和撤銷一個(gè)OLE-DB對(duì)象。OLE-DB對(duì)象的來源被稱為提供者。各種OLE-DB提供者是Visual C++軟件包的一部分,也有可能在廠商升級(jí)其數(shù)據(jù)庫(kù)產(chǎn)品時(shí)提供。OLE-DB的好處是,同一個(gè)提供者可以和任何Visual Studio產(chǎn)品協(xié)作:Visual C++,Visual Basic,Visual InterDev和Visual J++。OLE-DB還依賴于事件,這和任何COM對(duì)象一樣。這些事件說明什么時(shí)候要求更新數(shù)據(jù)庫(kù)表,以顯示其它用戶生成的新項(xiàng),或者所請(qǐng)求的表什么時(shí)候準(zhǔn)備好供查看。還會(huì)看到這樣的事件,它們用來發(fā)送信號(hào)通知各種數(shù)據(jù)庫(kù)錯(cuò)誤和其它要求馬上輪詢的活動(dòng)。

而ADO并不是數(shù)據(jù)庫(kù)訪問的底層解決方案。OLE-DB是使用ADO的基礎(chǔ);它也提供與數(shù)據(jù)庫(kù)通信的基礎(chǔ)。ADO只是OLE-DB提供的服務(wù)的包裝。事實(shí)上甚至可以繞過ADO而直接使用OLE-DB,但是使用ADO開發(fā)應(yīng)用程序的速度要快得多。

3 VC數(shù)據(jù)庫(kù)編程實(shí)例

ADO既能應(yīng)用到VC的強(qiáng)大功能,而且使用起來又比較方便,本文以ADO方式數(shù)據(jù)庫(kù)訪問為例,展示VC下如何進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用。

3.1 ADO數(shù)據(jù)庫(kù)開發(fā)基本流程

1)初始化COM庫(kù),引入ADO庫(kù)定義文件;2)用Connection對(duì)象連接數(shù)據(jù)庫(kù);3)利用建立好的連接,通過Connection、Command對(duì)象執(zhí)行SQL命令,或利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢、處理;(4)使用完畢后關(guān)閉連接釋放對(duì)象。

3.2 實(shí)例—BLOG數(shù)據(jù)保存

在實(shí)際的開發(fā)過程中常常需要存儲(chǔ)較大的二進(jìn)制數(shù)據(jù)對(duì)象,比如圖像、音頻文件、或其它二進(jìn)制數(shù)據(jù),這些數(shù)據(jù)稱之為二進(jìn)制大對(duì)象BLOB(Binary Large Object),其存取的方式與普通數(shù)據(jù)有所區(qū)別。這里利用ADO在數(shù)據(jù)庫(kù)中存取BLOB數(shù)據(jù)的具體實(shí)現(xiàn)過程。BLOB類型的數(shù)據(jù)無法用普通的方式進(jìn)行存儲(chǔ),需要使用AppendChunk函數(shù),AppendChunk包含在Field對(duì)象中,原型如下:HRESULT AppendChunk (const _variant_t Data );從函數(shù)原型中可以看到關(guān)鍵的問題是需把二進(jìn)制數(shù)據(jù)賦值給VARIANT類型的變量,下面給出具體的代碼并作簡(jiǎn)單的分析。

///假設(shè)m_pBMPBuffer指針指向一塊長(zhǎng)度為m_nFileLen的二進(jìn)制數(shù)據(jù),并且已經(jīng)成功打開了記錄集對(duì)象m_pRecordset///

char*pBuf = m_pBMPBuffer; VARIANTvarBLOB; SAFEARRAY *psa;

SAFEARRAYBOUND rgsabound[1];

m_pRecordset->AddNew();///添加新記錄

m_pRecordset->PutCollect(\"username\",_variant_t(\"小李\")); ///為新記錄填充username字段

m_pRecordset->PutCollect(\"old\",_variant_t((long)28); ///填充old字段

if(pBuf)

{ rgsabound[0]. Lbound = 0;

rgsabound[0].cElements = m_nFileLen;

psa = SafeArrayCreate(VT_UI1, 1, rgsabound); ///創(chuàng)建SAFEARRAY對(duì)象

for (long i = 0; i < (long)m_nFileLen; i++)

SafeArrayPutElement (psa, i, pBuf++);

///將pBuf指向的二進(jìn)制數(shù)據(jù)保存到SAFEARRAY對(duì)象psa中

varBLOB.vt = VT_ARRAY | VT_UI1; ///將varBLOB的類型設(shè)置為BYTE類型的數(shù)組

varBLOB.parray = psa; ///為varBLOB變量賦值

m_pRecordset->GetFields()->GetItem(\"photo\")->AppendChunk(varBLOB);

///加入BLOB類型的數(shù)據(jù)}

m_pRecordset->Update();///保存數(shù)據(jù)到庫(kù)中

至此數(shù)據(jù)已經(jīng)成功地保存到了數(shù)據(jù)庫(kù)中。

4 總結(jié)

ADO是Microsoft數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)的新接口,是建立在OLE /DB之上的高層數(shù)據(jù)庫(kù)訪問技術(shù),即使對(duì)OLE/DB,COM不了解也能輕松應(yīng)用ADO。在VC下應(yīng)用ADO方式進(jìn)行數(shù)據(jù)庫(kù)開發(fā)既能應(yīng)用到VC的優(yōu)良特性,又不失簡(jiǎn)便,是一種值得推薦的方法。

參考文獻(xiàn):

[1] 張慧平.電網(wǎng)中利用ODBC實(shí)現(xiàn)對(duì)歷史數(shù)據(jù)庫(kù)的訪問[J].航空精密制造技術(shù),1998.34(6):42-44.

[2] 王聰華.ADO訪問數(shù)據(jù)庫(kù)實(shí)例剖析[J].計(jì)算機(jī)應(yīng)用研究,2002(5):159-160.

[3] 鄭章,程剛,張勇.Visual C++6.0數(shù)據(jù)庫(kù)開發(fā)技術(shù)[M].北京:機(jī)械工業(yè)出版社,1999.

主站蜘蛛池模板: 久爱午夜精品免费视频| 精品一区二区三区四区五区| 手机精品视频在线观看免费| 亚洲an第二区国产精品| 亚亚洲乱码一二三四区| 欧美日韩激情在线| 亚洲狠狠婷婷综合久久久久| 尤物成AV人片在线观看| 亚洲国产成人精品青青草原| 精品人妻系列无码专区久久| 亚洲av无码专区久久蜜芽| 精品乱码久久久久久久| 日本91视频| 女人18毛片一级毛片在线| 最新加勒比隔壁人妻| 亚洲人妖在线| 久久黄色毛片| 五月丁香在线视频| 日本亚洲欧美在线| 毛片最新网址| 亚洲人成色在线观看| 丝袜高跟美脚国产1区| 人妻免费无码不卡视频| 97久久超碰极品视觉盛宴| 日韩精品无码一级毛片免费| 亚洲人视频在线观看| 国产99精品久久| 999国产精品| 亚洲第七页| 国产18页| 91激情视频| yjizz国产在线视频网| 人妻丰满熟妇αv无码| 91午夜福利在线观看| 伊人色综合久久天天| 国产女人18毛片水真多1| 538国产视频| 免费Aⅴ片在线观看蜜芽Tⅴ | 丝袜亚洲综合| 久久综合亚洲色一区二区三区| 2021天堂在线亚洲精品专区| 日韩国产黄色网站| 天天色天天综合网| 巨熟乳波霸若妻中文观看免费| 91美女视频在线| 四虎成人在线视频| 国内精品久久久久久久久久影视| 久久熟女AV| 91美女视频在线观看| 亚洲无限乱码| 色综合综合网| 国产日韩丝袜一二三区| 综合亚洲色图| 91娇喘视频| 亚洲中文字幕23页在线| 97色婷婷成人综合在线观看| 久久99国产综合精品女同| 亚洲无码日韩一区| 国产女人综合久久精品视| 日本在线欧美在线| 精品日韩亚洲欧美高清a| 亚洲精品国产精品乱码不卞| 亚洲二区视频| 国产午夜无码专区喷水| 久久99国产综合精品1| hezyo加勒比一区二区三区| 无码日韩视频| 福利小视频在线播放| 久久久久无码国产精品不卡| 国产精品视频观看裸模| 国产欧美视频综合二区| 99re精彩视频| 免费aa毛片| 国产精品无码AⅤ在线观看播放| a级毛片免费播放| 亚洲免费人成影院| 日韩人妻无码制服丝袜视频| 黄色污网站在线观看| 久久国产亚洲偷自| 中文字幕佐山爱一区二区免费| 88av在线看| 小说区 亚洲 自拍 另类|