版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第16節(jié)用MFC設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序本章主要內(nèi)容 n數(shù)據(jù)庫應(yīng)用系統(tǒng)及數(shù)據(jù)庫系統(tǒng)。nODBC的基本概念和結(jié)構(gòu)。n使用ODBC數(shù)據(jù)庫類編寫數(shù)據(jù)庫應(yīng)用程序。n使用ADO數(shù)據(jù)庫類編寫數(shù)據(jù)庫應(yīng)用程序介紹。 數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序n數(shù)據(jù)庫系統(tǒng)n數(shù)據(jù)庫系統(tǒng)組成 數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序u 標(biāo)準(zhǔn)接口n數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì) 數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫應(yīng)用程序VC數(shù)據(jù)庫編程nVisual C+通過若干種接口來支持關(guān)系數(shù)據(jù)庫的訪問,這些接口包括ODBC(開發(fā)式數(shù)據(jù)庫連接)、RDO(遠(yuǎn)程數(shù)
2、據(jù)對象)、DAO(數(shù)據(jù)訪問對象)、OLE DB和ADO(ActiveX數(shù)據(jù)對象)。這些接口反映了Micorsoft對數(shù)據(jù)庫支持的發(fā)展演化過程。16.2 數(shù)據(jù)庫開發(fā)技術(shù)簡介n本節(jié)簡要介紹VisualC+中常用的數(shù)據(jù)庫開發(fā)技術(shù),大致分為三類,即ODBC API/MFC ODBC、DAO以及ADO。其中,MFC ODBC是MFC對ODBC API的封裝,ADO是OLE DB的高層接口。16.2.1 ODBC API/MFC ODBC技術(shù)nODBC(Open Database Conectivity,開放式數(shù)據(jù)庫互聯(lián)),實(shí)際上是一個(gè)數(shù)據(jù)庫訪問庫,它包含訪問不同數(shù)據(jù)庫所要求的ODBC驅(qū)動程序。如要操作F
3、oxpro數(shù)據(jù)庫,要用Foxpro的ODBC驅(qū)動程序;要訪問DBASE,要用DBASE的ODBC驅(qū)動程序??傊瑧?yīng)用程序要操作不同類型的數(shù)據(jù)庫,只要調(diào)用ODBC所支持的函數(shù),動態(tài)鏈接到不同的驅(qū)動程序上即可。隨著ODBC技術(shù)的推出,許多開發(fā)工具軟件都把ODBC技術(shù)集成到自己的軟件中,如,Visual basic、Visual C+、Power Builder等等。.1 ODBC的基本構(gòu)成的基本構(gòu)成16.2.2 DAO技術(shù)nDAO(Data Access Object,數(shù)據(jù)訪問對象)是第一個(gè)面向?qū)ο蟮亟涌?,該技術(shù)最初用于像Access這樣的MicroSoft產(chǎn)品中。DAO依賴于用MicroSoft
4、 Access自動獲得的MicroSoft Jet數(shù)據(jù)庫引擎。另外,DAO還是較早版本的Visual Basic所使用的引擎(最新版的Visual Basic和Visual C+依賴于相同的ADO/OLE-DB組合),所以如果需要支持較早的Visual Basic應(yīng)用程序,那么DAO是一個(gè)不錯(cuò)的選擇。不過,目前此技術(shù)有被OLE DB/ADO取代地趨勢,所以一般也不再使用。16.2.3 ADO技術(shù)nADO,即ActiveX Data Objects,是一種特殊的OLE DB客戶程序,它允許訪問程序在Visual C+、Visual Basic、VBscript、Java等編程語言中訪問。ADO是
5、微軟大力推薦使用的編程接口,在微軟已經(jīng)停止對ODBC和DAO繼續(xù)發(fā)展的今天,學(xué)習(xí)使用ADO無疑是正確的選擇。nODBC管理器n配置ODBC數(shù)據(jù)源的方法和步驟 配置配置ODBC數(shù)據(jù)源數(shù)據(jù)源nM F C 的 O D B C 類 有 C D a t a b a s e ( 數(shù) 據(jù) 庫 類 ) 、CRecordset(記錄集類)、CRecordView(可視記錄集類 ) 、 C f i e l d E x c h a n g e ( 數(shù) 據(jù) 交 換 類 ) 、CDBException(異常類)。這些類的對象相互配合完成諸如連接數(shù)據(jù)源、選擇和操縱記錄、在表單中顯示操縱數(shù)據(jù)、直接調(diào)用ODBC API函數(shù)和
6、使用SQL語句等工作,也可以與MFC的文檔/視圖框架結(jié)構(gòu)協(xié)同工作。 MFC的的ODBC類類nCDatabase類uCDatabase類對象提供了對數(shù)據(jù)源的連接,通過它可以對數(shù)據(jù)源進(jìn)行操作。u應(yīng)用程序要訪問數(shù)據(jù)源提供的數(shù)據(jù),必須先創(chuàng)建一個(gè)與數(shù)據(jù)源相關(guān)聯(lián)的CDatabase類對象。u在這個(gè)類中封裝了一些與數(shù)據(jù)源進(jìn)行連接相關(guān)的操作。 MFC的的ODBC類類u例如下面的代碼創(chuàng)建了一個(gè)CDatabase對象m_db并與數(shù)據(jù)源tmsDSN進(jìn)行了連接: CDatabase m_db; /創(chuàng)建CDatabase對象/ 使用數(shù)據(jù)源tmsDSN或連接字符串ODBC;UID=sa連接 ( _T( tmsDSN ),
7、 FALSE, FALSE, _T( ODBC;DSN=tmsDSN;UID=sa ); MFC的的ODBC類類 MFC的的ODBC類類nCRecordset類nCRecordset類對象提供從數(shù)據(jù)源中提取出的記錄集。uCRecordset對象有動態(tài)行集(dynaset)和快照集(snapshot)兩種工作方式。動態(tài)行集能與其他用戶所做的更改保持同步??煺占瘎t是數(shù)據(jù)的一個(gè)靜態(tài)視圖。 MFC的的ODBC類類u使用CRecordset派生類的對象選擇和操縱數(shù)據(jù)源數(shù)據(jù)。例如檢查當(dāng)前記錄的數(shù)據(jù)字段,過濾、排序記錄集,編寫默認(rèn)的SQL SELECT語句,對選擇的記錄進(jìn)行滾動,添加、修改、刪除記錄,刷新記
8、錄集等等。u例如uCDatabase m_db;um_db.Open(_T(tmsDSN),FALSE,FALSE,u_T(ODBC; UID=sa),FALSE);uCRecordset m_set(&m_db);um_set.Open(AFX_DB_USE_DEFAULT_TYPE,uselect * from student);u./ 使用記錄集um_set.Close三;u三; MFC的的ODBC類類 MFC的的ODBC類類nCDBException類n例如n/ rs為CRecordset派生類的對象ntry 三; ncatch(CDBException * e) nAfxMe
9、ssageBox(e-m_strError, MB_ICONEXCLAMATION);ne-Delete三; /刪除CDBException對象n三;/丟失記錄位置,移到記錄集頭nreturn;nn三;小結(jié):用MFC進(jìn)行ODBC的編程過程 n(1)設(shè)計(jì)數(shù)據(jù)庫。n(2)定義ODBC數(shù)據(jù)源。n(3)創(chuàng)建應(yīng)用程序外殼。n(4)設(shè)計(jì)主窗體。n(5)將控件與數(shù)據(jù)庫字段相關(guān)聯(lián)。n(6)編寫代碼實(shí)現(xiàn)相關(guān)功能:添加新記錄功能、刪除記錄功能、對記錄排序功能、查找記錄功能等。 n顯示和處理表中的數(shù)據(jù)然后把位圖裝載到對象中:n連接兩個(gè)表nC類的使用方法在許多方面非常相似。 ODBC應(yīng)用程序?qū)嵗龖?yīng)用程序?qū)嵗?6.6
10、在Visual C+中使用ADO開發(fā)數(shù)據(jù)庫應(yīng)用程序n在應(yīng)用程序中,通過ADO和SQL語句的配合,可以實(shí)現(xiàn)對數(shù)據(jù)庫的一系列操作,例如創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、創(chuàng)建索引,實(shí)現(xiàn)數(shù)據(jù)庫的多重查詢、高級查詢和數(shù)據(jù)的匯總等技術(shù)。在本節(jié),將通過一個(gè)具體的實(shí)例詳細(xì)講解如何在Visual C+中,使用ADO對象開發(fā)數(shù)據(jù)庫應(yīng)用程序。16.6.1 Viusal C+對ADO的支持n為ADO操作提供了庫支持,一般情況下,每個(gè)Windows操作系統(tǒng)的Program FilesCommon FilesSystemado目錄下都有一個(gè)msado*.dll文件,根據(jù)Windows版本的不同,該文件可以是、或。在使用進(jìn)行ADO編程時(shí)
11、,可以借助的import預(yù)編譯指令,將該庫文件引用到工程里,從而使msado*.dll庫里的數(shù)據(jù)和函數(shù)聲明被應(yīng)用的代碼所使用。16.6.2 創(chuàng)建數(shù)據(jù)庫與實(shí)例工程n實(shí)例數(shù)據(jù)庫采用Access202X數(shù)據(jù)庫。啟動Access,執(zhí)行“文件”“新建”菜單命令,創(chuàng)建一個(gè)空的數(shù)據(jù)庫??梢栽贏ccess中,添加設(shè)計(jì)數(shù)據(jù)庫表,也可以在VC程序中通過ADO創(chuàng)建,本例采用后者。16.6.3 引入ADO對象nADO是一組動態(tài)鏈接庫,因此在使用之前還必須導(dǎo)入ADO并且初始化。在MFC應(yīng)用里,一般在應(yīng)用類的InitInstance成員函數(shù)里初始化OLE/COM庫環(huán)境比較合適。初始化過程非常簡單,只需簡單地調(diào)用AfxOl
12、eInit函數(shù)即可。16.6.4 連接數(shù)據(jù)源n在工程中引入ADO對象后,就可以通過Connection對象連接數(shù)據(jù)源了。16.6.5 開發(fā)技術(shù)連接對象(Connection)n連接對象表示到數(shù)據(jù)源的打開的連接,同時(shí)也表示與數(shù)據(jù)源的唯一會話。通常在使用ADO操作數(shù)據(jù)庫之前必須首先創(chuàng)建一個(gè)連接對象。連接對象為ADO對數(shù)據(jù)源的操作提供了一個(gè)操作環(huán)境,還可以用于操作事務(wù)處理。16.6.6 創(chuàng)建表并添加數(shù)據(jù)n在實(shí)例中,創(chuàng)建Access數(shù)據(jù)庫時(shí),并沒有創(chuàng)建數(shù)據(jù)庫表。在程序的初始化函數(shù)OnInitDialog中,通過連接對象執(zhí)行SQL語句創(chuàng)建一個(gè)數(shù)據(jù)庫表studentinfo,該表包含四個(gè)字段,分別為stuNo、stuname、stuaddress和stuphone,類型均為TEXT類型。16.6.7 開發(fā)技術(shù)ADO對象命令的執(zhí)行n在ADO對象中,有兩種不同的方法可以執(zhí)行命令。第一種方法是調(diào)用Connection對象的Execute函數(shù),實(shí)例中使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度文化產(chǎn)權(quán)交易平臺合作合同
- 2025年度膠合板原材料質(zhì)量檢測服務(wù)合同
- 2025年度智能電網(wǎng)設(shè)備加工與性能評估合同
- 2025年合同管理系統(tǒng)與客戶關(guān)系維護(hù)合同
- 2025年度智能家居升級改造工程合同模板
- 2025年度會議費(fèi)預(yù)算調(diào)整與控制管理合同范本
- 2025年度荒山旅游配套設(shè)施建設(shè)承包協(xié)議
- 2025年中國飛機(jī)電子飛行包(EFB)行業(yè)市場集中度、投融資動態(tài)及未來趨勢預(yù)測報(bào)告(智研咨詢發(fā)布)
- 2025年度建筑工程泥工勞務(wù)分包施工安全防護(hù)合同
- 2025年度戶外廣告設(shè)施清潔與維護(hù)服務(wù)合同
- 五年級數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 上海市楊浦區(qū)2024-2025學(xué)年八年級上學(xué)期英語期末考卷(含筆試答案無聽力答案、原文及音頻)
- 2024年蘇州農(nóng)業(yè)職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 課題申報(bào)參考:法國漢學(xué)家弗朗索瓦·朱利安對中國山水畫論的闡釋研究
- 2024年09月2024年中國農(nóng)業(yè)發(fā)展銀行總行部門秋季校園招聘(22人)筆試歷年參考題庫附帶答案詳解
- 2025年北京生命科技研究院招聘筆試參考題庫含答案解析
- 銀行金融機(jī)構(gòu)銀行金融服務(wù)協(xié)議
- GB/T 27697-2024立式油壓千斤頂
- 《消防機(jī)器人相關(guān)技術(shù)研究》
- 游泳館安全隱患排查
- 《媒介社會學(xué)》課件
評論
0/150
提交評論