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