VisualC+中的ODBC技術(shù)
ODBC的組成部件
(1)應(yīng)用程序(Application)。
(2)ODBC管理器(Administrator)。該程序位于Windows控制面板(ControlPanel)的32位ODBC內(nèi),其主要任務(wù)是管理安裝的ODBC驅(qū)動(dòng)程序和管理數(shù)據(jù)源。
(3)驅(qū)動(dòng)程序管理器(DriverManager)。驅(qū)動(dòng)程序管理器包含在ODBC32.DLL中,對(duì)用戶(hù)是透明的。其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC重要的部件。
(4)ODBCAPI。
(5)ODBC驅(qū)動(dòng)程序。是一些DLL,提供了ODBC和數(shù)據(jù)庫(kù)之間的接口。
(6)數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫(kù)位置和數(shù)據(jù)庫(kù)類(lèi)型等信息,是一種數(shù)據(jù)連接的抽象。
應(yīng)用程序要訪(fǎng)問(wèn)一個(gè)數(shù)據(jù)庫(kù),首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫(kù)位置、類(lèi)型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫(kù)的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建起與相應(yīng)數(shù)據(jù)庫(kù)的連接。
在ODBC中,ODBCAPI不能直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),必須通過(guò)ODBC驅(qū)動(dòng)程序管理器與數(shù)據(jù)庫(kù)交換信息。驅(qū)動(dòng)程序管理器負(fù)責(zé)將應(yīng)用程序?qū)DBCAPI的調(diào)用傳遞給驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序在執(zhí)行完相應(yīng)的操作后,將結(jié)果通過(guò)驅(qū)動(dòng)程序管理器返回給應(yīng)用程序。
一、VisualC++中MFC的ODBC應(yīng)用
在VisualC++中,MFC(MicrosoftFoundationClass基本類(lèi)庫(kù))是經(jīng)過(guò)對(duì)Windows應(yīng)用程序中各個(gè)部件進(jìn)行類(lèi)的抽象而建立的一組預(yù)定義的類(lèi),如窗口基類(lèi)(CWnd)、各種窗口派生類(lèi)等等,這些類(lèi)在應(yīng)用程序中可直接使用,不需要重新定義。在MFC中,也為ODBC預(yù)定義了幾個(gè)類(lèi),其中主要的是數(shù)據(jù)庫(kù)類(lèi)(CDatabase)和記錄集合類(lèi)(CRecoredset)。這兩個(gè)類(lèi)既有聯(lián)系又有區(qū)別,在應(yīng)用程序中,可以分別使用,也可以同時(shí)使用,每一類(lèi)也可以同時(shí)存在多個(gè)對(duì)象。CDatabase類(lèi)主要功能是建立了一個(gè)數(shù)據(jù)源的連接,CRecordset類(lèi)代表了從一個(gè)數(shù)據(jù)表中按預(yù)定的查詢(xún)條件獲得的記錄的集合。一般說(shuō)來(lái),前者適宜于對(duì)數(shù)據(jù)源下的某個(gè)數(shù)據(jù)表進(jìn)行整體操作,后者用于對(duì)所選的記錄集合進(jìn)行處理。CDatabase類(lèi)中并不包含所有的ODBCAPI函數(shù),大部分操作功能仍須直接調(diào)用ODBCAPI函數(shù)。
概括的說(shuō),CDatabase針對(duì)某個(gè)數(shù)據(jù)庫(kù),它負(fù)責(zé)連接數(shù)據(jù)庫(kù);CRecordset針對(duì)數(shù)據(jù)源中的記錄集,它負(fù)責(zé)對(duì)記錄的操作。而另外的函數(shù)如CRecordView負(fù)責(zé)界面,CFieldExchange負(fù)責(zé)CRecordset與數(shù)據(jù)源的數(shù)據(jù)交換。下面就介紹ODBC的應(yīng)用:
(一)建立與數(shù)據(jù)源的連接
應(yīng)先構(gòu)造一個(gè)CDatabase對(duì)象,然后再調(diào)用CDatabase的Open成員函數(shù)。
對(duì)象名.Open(lpszDSN,bExclusive,bReadOnly,lpszConnect);
打開(kāi)函數(shù)需要輸入四個(gè)參數(shù)。lpszDSN:要連接的數(shù)據(jù)源的名字,如果lpszDSN=NULL且lpszConnect中也沒(méi)有指明數(shù)據(jù)源名,則該調(diào)用會(huì)自動(dòng)出現(xiàn)一個(gè)對(duì)話(huà)框列出所有可用的數(shù)據(jù)源(名),讓用戶(hù)選擇。bExclusive:只支持“凹”儔(False)值,表示為共享(share)方式連接。因此,應(yīng)用程序在運(yùn)行前,一定要裝入share.exe或在Windows的system.ini中裝入vshare.386。ReadOnly:指明數(shù)據(jù)源操作方式是“爸歡”簾還是可以修改。lpszConnect:指明連接字符串,包括數(shù)據(jù)源名、用戶(hù)標(biāo)識(shí)碼、口令等信息。該字符串必須以“癘;”笨?表示該連接是與一個(gè)ODBC數(shù)據(jù)源的連接(考慮以后版本支持非ODBC數(shù)據(jù)源)。要從一個(gè)數(shù)據(jù)源中脫離,可調(diào)用函數(shù)Close.
(二)操作數(shù)據(jù)表
數(shù)據(jù)源打開(kāi)后,即可對(duì)數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)表進(jìn)行操作,操作以調(diào)用SQL語(yǔ)句方式進(jìn)行,可直接通過(guò)ODBCAPI函數(shù),或者CDatabase類(lèi)成員函數(shù)ExecuteSQL。
(三)建立和關(guān)閉記錄集
首先要構(gòu)造一個(gè)CRecordset派生類(lèi)對(duì)象,然后調(diào)用Open成員函數(shù)查詢(xún)數(shù)據(jù)源的記錄并建立記錄集,用戶(hù)可隨時(shí)調(diào)用Requery成員函數(shù)來(lái)重新查詢(xún)和建立記錄集。調(diào)用無(wú)參成員函數(shù)Close可以關(guān)閉記錄集。
(四)選取記錄和字段
在調(diào)用Open函數(shù)時(shí),即獲得了符合條件的一組記錄,條件語(yǔ)句在Open函數(shù)中的lpszSQL中給出,如果lpszSQL為NULL,則必須重載CRecordset的函數(shù)以提供該語(yǔ)句。調(diào)用CRecordset的滾動(dòng)(scroll)成員函數(shù):MoveFirst(),M
oveNext(),MovePrev(),MoveLast()等,用來(lái)在記錄集中上下滾動(dòng)。
(五)修改、添加和刪除記錄
先調(diào)用Edit成員函數(shù)進(jìn)入編輯模式,程序可修改數(shù)據(jù)成員,再調(diào)用Update函數(shù)完成編輯。
要添加新記錄,可調(diào)用AddNew成員函數(shù)進(jìn)入添加模式,再調(diào)用Update函數(shù)完成添加。
要?jiǎng)h除當(dāng)前記錄,調(diào)用Delete成員函數(shù)。該函數(shù)會(huì)同時(shí)給記錄集和數(shù)據(jù)源中當(dāng)前記錄加上刪除標(biāo)記,再調(diào)用Update函數(shù)完成刪除。
從以上可以看出,ODBC應(yīng)用程序只需關(guān)心數(shù)據(jù)的處理而不必費(fèi)心數(shù)據(jù)的存取,利用VisualC++中的MFC類(lèi)函數(shù)成員,用戶(hù)可以方便地建立數(shù)據(jù)庫(kù)應(yīng)用程序。
欄目分類(lèi)
- 延安民族學(xué)院辦學(xué)精神初探
- 明清時(shí)期運(yùn)河區(qū)域的徽商研究
- 先秦至兩漢宴饗音樂(lè)流變考
- “三全育人”視角下高校輔導(dǎo)員的使命擔(dān)當(dāng)及實(shí)現(xiàn)路徑
- 新高考背景下高中與高校教育發(fā)展的困境及改進(jìn)路徑
- 言對(duì)兒童普通話(huà)學(xué)習(xí)的影響及解決策略 —以四川方言為例
- 言對(duì)兒童普通話(huà)學(xué)習(xí)的影響及解決策略 —以四川方言為例
- 重慶市在校大學(xué)生普通話(huà)與方言使用情況分析 ——以重慶大學(xué)城及萬(wàn)州區(qū)高校為例
- 國(guó)外高等院校優(yōu)質(zhì)教育資源共建共享模式淺議
- 教師節(jié)活動(dòng)強(qiáng)勢(shì)來(lái)襲
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說(shuō)明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問(wèn)題”。
- 重磅!CSSCI來(lái)源期刊(2023-2024版)最新期刊目錄看點(diǎn)分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫(xiě)作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫(xiě)規(guī)則
- 盤(pán)點(diǎn)那些評(píng)職稱(chēng)超管用的資源,1,3和5已經(jīng)“絕種”了
- 職稱(chēng)話(huà)題| 為什么黨校更認(rèn)可省市級(jí)黨報(bào)?是否有什么說(shuō)據(jù)?還有哪些機(jī)構(gòu)認(rèn)可黨報(bào)?
- 《農(nóng)業(yè)經(jīng)濟(jì)》論文投稿解析,難度指數(shù)四顆星,附好發(fā)選題!