版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1基于基于VCVC平臺(tái)的數(shù)據(jù)存取對(duì)象(平臺(tái)的數(shù)據(jù)存取對(duì)象(DAODAO)技術(shù))技術(shù)(1)(1)楊峰唐常杰徐代剛宋曉梅四川聯(lián)合大學(xué)計(jì)科系(610064)摘要:數(shù)據(jù)訪問對(duì)象(DAO)使用MicrosoftJet數(shù)據(jù)庫(kù)引擎,可訪問MicrosoftAccess數(shù)據(jù)庫(kù),ODBC數(shù)據(jù)源,以及其他可安裝的ISAM數(shù)據(jù)庫(kù)。在VC平臺(tái)上有靈活的DAO編程方法。MFC將DAO類封裝其中。VC是強(qiáng)大而靈活的編程語(yǔ)言。常常需要在VC中直接對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行
2、查詢等操作。本文介紹使用數(shù)據(jù)存取對(duì)象(DAO)連接數(shù)據(jù)庫(kù)的技術(shù),并通過(guò)實(shí)例對(duì)細(xì)節(jié)加以說(shuō)明。1DAODAO可訪問的數(shù)據(jù)庫(kù)可訪問的數(shù)據(jù)庫(kù)DAO使用MicrosoftJet數(shù)據(jù)庫(kù)引擎可訪問MicrosoftAccess(.MDB)數(shù)據(jù)庫(kù),ODBC數(shù)據(jù)源,使用一個(gè)ODBC驅(qū)動(dòng)器,以及其他可安裝的ISAM數(shù)據(jù)庫(kù),如dBaseParadoxFoxProBtrieve等等。2DAODAO編程的三種方法編程的三種方法(1)(1)采用采用DAODAOOL
3、EOLEAutomationAutomation接口:DAO為OLEAutomation提供了一個(gè)基于vtable的應(yīng)用接口。DAOSDK提供了描述DAO的vtable接口的頭文件,因此不需要再通過(guò)IDispatch機(jī)制編程。當(dāng)創(chuàng)建了一個(gè)DBEngine對(duì)象實(shí)例后,對(duì)象的實(shí)例是通過(guò)父類來(lái)創(chuàng)建。否則,這些對(duì)象就是典型的OLEComponentObjectModel(COM)對(duì)象。因此,應(yīng)用程序需要負(fù)責(zé)釋放這些對(duì)象的空間。(2)dbDAO(
4、2)dbDAO類:用VB開發(fā)DAO接口非常簡(jiǎn)單并且需要很少的OLECOM知識(shí)。dbDAO類支持對(duì)象的動(dòng)態(tài)分配空間和回收空間,可能的情況下,它還采用自帶的C數(shù)據(jù)類型,或標(biāo)準(zhǔn)的OLE變量。它不需要精通C,調(diào)用其函數(shù)的語(yǔ)法同VB中的調(diào)用相似。它支持直接在數(shù)據(jù)結(jié)構(gòu)中讀取大量數(shù)據(jù)。(3)(3)采用采用MFCMFCDAODAO類:用VC編程DAO的功能是通過(guò)MFC完成的?;贑Recdset類的代碼是為ODBC開發(fā)的其派生類CDAec1dset類在
5、繼承了全部數(shù)據(jù)庫(kù)功能的同時(shí),增加了更完整的數(shù)據(jù)1注:國(guó)家自然科學(xué)基金69773051資助項(xiàng)目作者簡(jiǎn)介:楊峰徐代剛宋曉梅四川聯(lián)合大學(xué)計(jì)科系96級(jí)研究生。唐常杰四川聯(lián)大教授。研究方向是數(shù)據(jù)庫(kù)與知識(shí)庫(kù)。EMAIL地址為nic6002@scuu.庫(kù)功能。此外,DAO還可通過(guò)ODBC訪問其他類型的數(shù)據(jù)庫(kù)。用戶可以直接調(diào)用VC4.0版本中所包含的DAO以及DAOSDK。3MFCMFC所封裝的所封裝的DAODAO類(1)(1)CDaoWkspaceC
6、DaoWkspace該類對(duì)應(yīng)于DAO中的工作臺(tái),為用戶定義一個(gè)對(duì)話。它包含打開的數(shù)據(jù)庫(kù),并提供同時(shí)處理機(jī)制。(2)(2)CDaoDatabaseCDaoDatabase該類對(duì)應(yīng)于DAO中的數(shù)據(jù)庫(kù),它代表與數(shù)據(jù)庫(kù)的連接,比ODBC數(shù)據(jù)庫(kù)類有更強(qiáng)的能力去操縱數(shù)據(jù)庫(kù),可以直接讀取MicrosoftJet的.MDB文件。(3)(3)CDaoTableDefCDaoTableDef該類對(duì)應(yīng)于DAO中的Tabledef(表定義),表示一個(gè)表的模式(
7、結(jié)構(gòu)),使用SQL的DataManipulationLanguage(DML)子集來(lái)生成并操縱數(shù)據(jù)庫(kù)中的表。(4)(4)CDaoQueryDefCDaoQueryDef該類對(duì)應(yīng)于DAO中的Querydef(查詢定義)。用戶所生成的大多數(shù)應(yīng)用程序只需要數(shù)據(jù)庫(kù)記錄的一個(gè)子集。Querydef對(duì)象表示用戶生成并運(yùn)行的查詢,或者用來(lái)生成記錄集合,按要求過(guò)濾和排序記錄。(5)(5)CDAecdsetCDAecdset該類對(duì)應(yīng)于DAO中的記錄集合,
8、它代表從數(shù)據(jù)源中選擇的記錄集合。記錄集合可以代表從一個(gè)或多個(gè)數(shù)據(jù)庫(kù)表的行中所選擇的一個(gè)或多個(gè)特定的列(欄)。(6)(6)CDaoExceptionCDaoException該類對(duì)應(yīng)于DAO中的異常處理類。(7)(7)CDaoFieldExchangeCDaoFieldExchange該類不是MFC特有的,它管理著數(shù)據(jù)庫(kù)中的記錄與recdset中的字段變量之間的數(shù)據(jù)交換。通過(guò)上述類,MFC封裝了DAO的各種功能。下面,通過(guò)兩個(gè)VC5.0做
9、的簡(jiǎn)單數(shù)據(jù)庫(kù)應(yīng)用程序,闡明VCDAODB的技術(shù)。4示例示例例1一個(gè)簡(jiǎn)單的查詢修改程序。設(shè)已經(jīng)用Access建立如下數(shù)據(jù)庫(kù)ENROLL.MDB,其中有表:Teacher和Student如圖1。3m_pListView=NULL將兩個(gè)變量置為NULL。CMyDao2Doc::~CMyDao2Doc()if(m_pDB)在析構(gòu)函數(shù)中刪除指針變量。if(m_pDBIsOpen())m_pDBClose()m_pDBBOOLCMyDao2Doc:
10、:OnNewDocument()對(duì)m_pListView變量進(jìn)行初始化if(!CDocument::OnNewDocument())returnFALSEPOSITIONpos=GetFirstViewPosition()CViewpView=GetNextView(pos)m_pListView=DYNAMIC_DOWNCAST(CMyDao2ViewpView)returnTRUEvoidCMyDao2Doc::OnFileOpen
11、()LPCTSTRlpszPathNamelpszPathName=“enroll.mdb”自動(dòng)打開所需的數(shù)據(jù)庫(kù)文件CDaoDatabasetmpDB=newCDaoDatabasetrytmpDBOpen(lpszPathName)catch(CDaoExceptione)tmpDBe()returnFALSE如果有錯(cuò),則刪除指針并返回if(m_pDB)if(m_pDBIsOpen())m_pDBClose()m_pDB關(guān)閉數(shù)據(jù)庫(kù)m_
12、pDB=tmpDBm_pListViewm_pDB=m_pDBm_pListViewListTableData()顯示Student表returnTRUE對(duì)CMyDAO2View單擊鼠標(biāo)右鍵,增加CDaoDatabasem_pDB變量再添加voidListTableData(LPCTSTRstrTableName)和voidAddItem(intnItemintnSubItemLPCTSTRstrItem)兩個(gè)函數(shù)。再對(duì)CMyDAO2V
13、iew單擊鼠標(biāo)右鍵,在AddWindowsMessageHler中,選擇WM_CREATE增加對(duì)OnCreate()事件的處理函數(shù)。其中,ShowTableData()函數(shù)是顯示的主控程序,而每讀出一條記錄都通過(guò)AddItem()函數(shù)將其添加到ListView中。同時(shí),在MyDAO2View.h應(yīng)前面加入以下語(yǔ)句:#includeclassCListCtrlExclassCMyDao2View程序主要部分如下:intCMyDao2Vie
14、w::OnCreate(LPCREATESTRUCTlpCreateStruct)lpCreateStructstyle|=LVS_REPT用報(bào)表的方式顯示數(shù)據(jù)if(CListView::OnCreate(lpCreateStruct)==1)return1return0voidCMyDao2View::ListTableData()ASSERT(m_pDB)ASSERT(m_pDBIsOpen())CListCtrlExCDaoFie
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)用層數(shù)據(jù)型對(duì)象在RDBMS中存取技術(shù)的實(shí)現(xiàn).pdf
- 使用ado實(shí)現(xiàn)vc中二進(jìn)制文件數(shù)據(jù)的存取
- 基于VC軟件開發(fā)平臺(tái)的集散式數(shù)據(jù)采集系統(tǒng).pdf
- vc++對(duì)象模型
- 基于Hadoop的數(shù)據(jù)庫(kù)中高效數(shù)據(jù)存取技術(shù)研究.pdf
- 基于SDO的異構(gòu)數(shù)據(jù)存取技術(shù)及應(yīng)用研究.pdf
- 基于SATA硬盤陣列的高速數(shù)據(jù)存取技術(shù)研究.pdf
- 利用數(shù)據(jù)庫(kù)存取組件存取數(shù)據(jù)庫(kù)
- [feiq]實(shí)驗(yàn)三 利用ado對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的存取操作
- 談vc++對(duì)象模型
- 基于vc軟件開發(fā)平臺(tái)的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與開發(fā).pdf
- CAD與VC數(shù)據(jù)接口平臺(tái)的研究與應(yīng)用.pdf
- 基于VC++平臺(tái)的工程變形監(jiān)測(cè)信息處理技術(shù).pdf
- 基于NoSQL海量數(shù)據(jù)存取策略研究.pdf
- 基于面向?qū)ο蠹夹g(shù)的聯(lián)合循環(huán)計(jì)算平臺(tái)開發(fā).pdf
- 基于內(nèi)核對(duì)象鏈接關(guān)系的內(nèi)存取證研究.pdf
- 基于Cortex-A9平臺(tái)的VC-1視頻解碼優(yōu)化.pdf
- 基于windows操作平臺(tái)的數(shù)據(jù)恢復(fù)技術(shù)
- 基于HBase的矢量空間數(shù)據(jù)存取關(guān)鍵技術(shù)研究.pdf
- 空間數(shù)據(jù)的存取
評(píng)論
0/150
提交評(píng)論