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ì)用戶是透明的。其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC重要的部件。
(4)ODBCAPI。
(5)ODBC驅(qū)動(dòng)程序。是一些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口。
(6)數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,是一種數(shù)據(jù)連接的抽象。
應(yīng)用程序要訪問一個(gè)數(shù)據(jù)庫,首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、類型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建起與相應(yīng)數(shù)據(jù)庫的連接。
在ODBC中,ODBCAPI不能直接訪問數(shù)據(jù)庫,必須通過ODBC驅(qū)動(dòng)程序管理器與數(shù)據(jù)庫交換信息。驅(qū)動(dòng)程序管理器負(fù)責(zé)將應(yīng)用程序?qū)DBCAPI的調(diào)用傳遞給驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序在執(zhí)行完相應(yīng)的操作后,將結(jié)果通過驅(qū)動(dòng)程序管理器返回給應(yīng)用程序。
一、VisualC++中MFC的ODBC應(yīng)用
在VisualC++中,MFC(MicrosoftFoundationClass基本類庫)是經(jīng)過對(duì)Windows應(yīng)用程序中各個(gè)部件進(jìn)行類的抽象而建立的一組預(yù)定義的類,如窗口基類(CWnd)、各種窗口派生類等等,這些類在應(yīng)用程序中可直接使用,不需要重新定義。在MFC中,也為ODBC預(yù)定義了幾個(gè)類,其中主要的是數(shù)據(jù)庫類(CDatabase)和記錄集合類(CRecoredset)。這兩個(gè)類既有聯(lián)系又有區(qū)別,在應(yīng)用程序中,可以分別使用,也可以同時(shí)使用,每一類也可以同時(shí)存在多個(gè)對(duì)象。CDatabase類主要功能是建立了一個(gè)數(shù)據(jù)源的連接,CRecordset類代表了從一個(gè)數(shù)據(jù)表中按預(yù)定的查詢條件獲得的記錄的集合。一般說來,前者適宜于對(duì)數(shù)據(jù)源下的某個(gè)數(shù)據(jù)表進(jìn)行整體操作,后者用于對(duì)所選的記錄集合進(jìn)行處理。CDatabase類中并不包含所有的ODBCAPI函數(shù),大部分操作功能仍須直接調(diào)用ODBCAPI函數(shù)。
概括的說,CDatabase針對(duì)某個(gè)數(shù)據(jù)庫,它負(fù)責(zé)連接數(shù)據(jù)庫;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);
打開函數(shù)需要輸入四個(gè)參數(shù)。lpszDSN:要連接的數(shù)據(jù)源的名字,如果lpszDSN=NULL且lpszConnect中也沒有指明數(shù)據(jù)源名,則該調(diào)用會(huì)自動(dòng)出現(xiàn)一個(gè)對(duì)話框列出所有可用的數(shù)據(jù)源(名),讓用戶選擇。bExclusive:只支持“凹”儔(False)值,表示為共享(share)方式連接。因此,應(yīng)用程序在運(yùn)行前,一定要裝入share.exe或在Windows的system.ini中裝入vshare.386。ReadOnly:指明數(shù)據(jù)源操作方式是“爸歡”簾還是可以修改。lpszConnect:指明連接字符串,包括數(shù)據(jù)源名、用戶標(biāo)識(shí)碼、口令等信息。該字符串必須以“癘;”笨?表示該連接是與一個(gè)ODBC數(shù)據(jù)源的連接(考慮以后版本支持非ODBC數(shù)據(jù)源)。要從一個(gè)數(shù)據(jù)源中脫離,可調(diào)用函數(shù)Close.
(二)操作數(shù)據(jù)表
數(shù)據(jù)源打開后,即可對(duì)數(shù)據(jù)庫文件中的數(shù)據(jù)表進(jìn)行操作,操作以調(diào)用SQL語句方式進(jìn)行,可直接通過ODBCAPI函數(shù),或者CDatabase類成員函數(shù)ExecuteSQL。
(三)建立和關(guān)閉記錄集
首先要構(gòu)造一個(gè)CRecordset派生類對(duì)象,然后調(diào)用Open成員函數(shù)查詢數(shù)據(jù)源的記錄并建立記錄集,用戶可隨時(shí)調(diào)用Requery成員函數(shù)來重新查詢和建立記錄集。調(diào)用無參成員函數(shù)Close可以關(guān)閉記錄集。
(四)選取記錄和字段
在調(diào)用Open函數(shù)時(shí),即獲得了符合條件的一組記錄,條件語句在Open函數(shù)中的lpszSQL中給出,如果lpszSQL為NULL,則必須重載CRecordset的函數(shù)以提供該語句。調(diào)用CRecordset的滾動(dòng)(scroll)成員函數(shù):MoveFirst(),M
oveNext(),MovePrev(),MoveLast()等,用來在記錄集中上下滾動(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類函數(shù)成員,用戶可以方便地建立數(shù)據(jù)庫應(yīng)用程序。
欄目分類
- 基于現(xiàn)實(shí)場(chǎng)域的產(chǎn)品結(jié)構(gòu)設(shè)計(jì)課程教學(xué)實(shí)踐探索
- 國產(chǎn)AIGC+PS分層協(xié)作的設(shè)計(jì)教學(xué)實(shí)證
- 現(xiàn)當(dāng)代西北山水畫探析
- 巖彩在綜合材料繪畫創(chuàng)作中的表現(xiàn)探討
- 三全育人視角下高校公共藝術(shù)鑒賞課程思政教學(xué)體系構(gòu)建與實(shí)踐探究
- 敦煌舞身體姿態(tài)中二律背反的現(xiàn)象及成因
- 體育舞蹈專項(xiàng)訓(xùn)練中“平臺(tái)期”形成機(jī)制及干預(yù)研究
- 面向小學(xué)教育的地方高師舞蹈課程體系構(gòu)建
- 拉丁舞融入初中體育課堂之創(chuàng)新教學(xué)模式與學(xué)生素養(yǎng)提升探究
- 互動(dòng)式舞臺(tái)技術(shù)在舞蹈表演中的應(yīng)用分析
- 別被這個(gè)老掉牙的報(bào)紙理論版投稿郵箱誤導(dǎo)了!最新核實(shí)91個(gè)報(bào)紙理論版投稿郵箱通道,一次集齊
- 喜報(bào)!《中國博物館》入選CSSCI擴(kuò)展版來源期刊(最新CSSCI南大核心期刊目錄2025-2026版)!新入選!
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 國內(nèi)核心期刊分級(jí)情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點(diǎn)那些評(píng)職稱超管用的資源,1,3和5已經(jīng)“絕種”了
- 職稱話題| 為什么黨校更認(rèn)可省市級(jí)黨報(bào)?是否有什么說據(jù)?還有哪些機(jī)構(gòu)認(rèn)可黨報(bào)?
- 《農(nóng)業(yè)經(jīng)濟(jì)》論文投稿解析,難度指數(shù)四顆星,附好發(fā)選題!

0373-5939925
2851259250@qq.com

