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