優(yōu)勝?gòu)倪x擇開(kāi)始,我們是您最好的選擇!—— 中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

VisualC+中的ODBC技術(shù)

作者:李海燕來(lái)源:原創(chuàng)日期:2012-12-25人氣:1025

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)用程序。

網(wǎng)絡(luò)客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過(guò)郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號(hào)中州期刊聯(lián)盟 ICP備案號(hào):豫ICP備2020036848

【免責(zé)聲明】:中州期刊聯(lián)盟所提供的信息資源如有侵權(quán)、違規(guī),請(qǐng)及時(shí)告知。

版權(quán)所有:中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

關(guān)注”中州期刊聯(lián)盟”公眾號(hào)
了解論文寫(xiě)作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院?jiǎn)挝话l(fā)核心?

掃描關(guān)注公眾號(hào)

論文發(fā)表不再有疑惑

論文寫(xiě)作全系列課程

掃碼了解更多

輕松寫(xiě)核心期刊論文

在線(xiàn)留言