![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/13/20/c2aa9dd8-76a2-448c-bf8b-d713f3c31edd/c2aa9dd8-76a2-448c-bf8b-d713f3c31eddpic.jpg)
![《visual c--.net程序設計教程與上機指導》第11章數據庫編程_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-8/13/20/c2aa9dd8-76a2-448c-bf8b-d713f3c31edd/c2aa9dd8-76a2-448c-bf8b-d713f3c31edd1.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第11章 數據庫編程,教學提示:在這一章中,主要向讀者介紹數據庫的基本概念、數據庫編程的常用技術以及結合數據庫操作的實例,使讀者能在Visual C++ .NET開發(fā)環(huán)境下掌握對數據庫操作的方法。本章將重點介紹數據庫的訪問技術,如ODBC技術、ADO技術,還介紹了如何配置數據源等。學習完這些內容后,相信讀者對Visual C++ .NET環(huán)境下的數據庫編程將會有一個比較全面的了解。,教學目標:掌握數據庫的基本概念;掌握數據庫編程技術的
2、使用;掌握注冊數據源的方法;通過上機實踐,初步掌握上述內容的靈活運用。,11.1 數據庫基本概念,11.1.1 數據庫、DBMS和SQL概念11.1.2 數據庫的幾種訪問技術,,11.1.1 數據庫、DBMS和SQL概念,數據庫是數據的集合,它由一個或多個表組成。每一個表中都存儲了對一類對象的數據描述,表11.1就是一個典型的表。表的每一列描述了對象的一個屬性,如ID、NAME等,而表的每一行則是對一個對象的具體描述。一般將
3、表中的一行稱作記錄(record)或行(row),將表的每一列稱作字段(field)或列(column)。數據庫通常還包括一些附加結構用來維護數據?,F在普遍使用的一種數據庫就是關系數據庫。在關系數據庫中,數據的基本單位是關系,關系就是一張二維表,數據按行列有規(guī)則的排列、組織。,返回,表11.1 表的例子,返回,11.1.2 數據庫的幾種訪問技術,Visual C++ .NET提供了多種訪問數據庫技術,如下所示:●ODBC (Ope
4、n DataBase Connectivity)● MFC ODBC(Microsoft Foundation Classes ODBC)● DAO (Data Access Object)● OLE DB(Object Link and Embedding DataBase)● ADO、ADO .NET (ActiveX Data Object),返回,11.2 ODBC編程技術的使用,11.2.1 MFC的主要ODBC類
5、概述11.2.2 CDatabase類的使用11.2.3 CRecordset類的使用11.2.4 CRecordView類的使用,11.2.1 MFC的主要ODBC類概述,因為CArchive是基于文件的,所以在創(chuàng)建一個CArchive對象之前必須要打開一個文件,CArchive構造函數的第一個參數就是文件指針,其原型如下:CArchive(CFile* pFile, UINT nMode, int nBufSize=
6、4096, void* lpBuf=NULL);,返回,11.2.2 CDatabase類的使用,函數CArchive::Close()用來關閉CArchive,在關閉之前要把緩沖區(qū)中的所有數據存入文件,關閉之后中斷CArchive對象與文件的聯系。當關閉后,不能用它進行任何讀寫操作。必須先關閉CArchive對象,再關閉與之相聯系的文件,否則會出錯;換言之,在關閉一個文件之前必須關閉與之相連的所有CArchive對象。,返回,11.
7、2.3 CRecordset類的使用,CRecordset類代表一個記錄集。該類是MFC的ODBC類中最重要、功能最強大的類。1. 動態(tài)集、快照、光標和光標庫2. 域數據成員與數據交換3. 記錄集的建立4. Requery成員函數5. 記錄的過濾和排序6. 滾動記錄7. 修改記錄8. 添加記錄9. 刪除記錄,返回,1. 動態(tài)集、快照、光標和光標庫,在多任務操作系統或網絡環(huán)境下,多個用戶可以共享同一
8、個數據源。共享數據的一個主要問題是如何協調各個用戶對數據源的修改。記錄集主要分為快照(Snapshot)和動態(tài)集(Dynaset)兩種,CRecordset類對這兩者都支持。這兩種記錄集的不同表現在它們對別的應用改變數據源記錄采取了不同的處理方法。 快照型記錄集提供了對數據的靜態(tài)視圖??煺帐莻€很形象的術語,就好象對數據源的某些記錄照了一張照片一樣。 動態(tài)集提供了數據的動態(tài)視圖,當別的用戶修改或刪除了記錄
9、集中的記錄時,會在動態(tài)集中反映出來,當滾動到修改過的記錄時,對其所作的修改會立即反映到動態(tài)集中。 光標庫(Cursor Library)是處于ODBC驅動程序管理器和驅動程序之間的動態(tài)鏈接庫(ODBCCR32.DLL),光標庫的主要功能是支持快照以及為底層驅動程序提供雙向滾動能力。,返回,2. 域數據成員與數據交換,CRecordset類代表一個記錄集。用戶一般需要創(chuàng)建一個CRecordset的派生類,為派生的記錄集類
10、創(chuàng)建一批數據成員,這些數據成員與記錄的各字段相對應,被稱為字段數據成員或域數據成員。域數據成員用來保存某條記錄的各個字段,它們是程序與記錄之間的緩沖區(qū)。域數據成員代表當前記錄,當在記錄集中滾動到某一記錄時,框架自動地把記錄的各個字段復制到記錄集對象的域數據成員中。當用戶要修改當前記錄或增加新記錄時,程序先將各字段的新值放入域數據成員中,然后調用相應的CRecordset 成員函數,把域數據成員設置到數據源中。,返回,3. 記錄集的建
11、立,要建立記錄集,首先要構造一個CRecordset派生類對象,然后調用Open成員函數查詢數據源中的記錄并建立記錄集。在Open函數中,可能會調用GetDefaulConnect和 GetDefaultSQL函數。函數的聲明為:CRecordset m_RecordSet_Name(CDatabase* pDatabase=NULL);,返回,4. Requery成員函數,建立記錄集后,用戶可以隨時調用Requery成員函數來重新
12、查詢和建立記錄集。Requery有兩個重要用途:●使記錄集能反映用戶對數據源的改變?!癜凑招碌倪^濾或排序方法查詢記錄并重新建立記錄集。在調用Requery之前,可調用CanRestart來判斷記錄集是否支持Requery操作。要記住Requery只能在成功調用Open后調用,所以程序應調用IsOpen來判斷記錄集是否已建立。函數聲明為:virtual BOOL Requery ( ); throw ( CDBExceptio
13、n, CmemoryException );返回TRUE表明記錄集建立成功,否則返回FALSE。若函數內部出錯則產生異常。,返回,5. 記錄的過濾和排序,CRecordset 類有兩個公共數據成員m_strFilter和m_strSort用來設置對記錄的過濾和排序。在調用Open或Requery前,如果在這兩個數據成員中指定了過濾或排序,那么Open和Requery將按這兩個數據成員指定的過濾和排序來查詢數據源。,返回,6. 滾動
14、記錄,CRecordset提供了幾個成員函數用來在記錄集中滾動,如下所示。當用這些函數滾動到一個新記錄時,框架會自動地把新記錄的內容復制到域數據成員中。●void MoveNext( );● void MovePrev( );● void MoveFirst( );● void MoveLast( );● void SetAbsolutePosition ( long nRows);,返回,7. 修改記錄,要修改當
15、前記錄,應該按下列步驟進行:(1) 調用Edit成員函數。調用該函數后就進入了編輯模式,程序可以修改域數據成員。 (2) 設置域數據成員的新值。 (3) 調用Update完成編輯。Update把變化后的記錄寫入數據庫并結束編輯模式。,返回,8. 添加記錄,要向記錄集中添加新的記錄,應該按下列步驟進行:(1) 調用AddNew成員函數。調用該函數后就進入了添加模式,程序可以把所有的域數據成員都設置成NULL。(2)
16、設置域數據成員。(3) 調用Update。Update把域數據成員中的內容作為新記錄寫入數據源,從而結束添加。,返回,9. 刪除記錄,要刪除記錄集的當前記錄,應該按下面兩步進行:(1) 調用Delete成員函數。該函數會同時給記錄集和數據源中當前記錄加上刪除標記。注意不要在一個空記錄集中調用Delete,否則會產生一個異常。(2) 滾動到另一個記錄上以跳過刪除記錄。,返回,11.2.4 CRecordView類的使用,C
17、RecordView(記錄視圖)是CFromView的派生類,它提供了一個表單視圖來顯示當前記錄。一個典型的記錄視圖如圖11.2所示,用戶可以通過表單視圖顯示當前記錄。通過記錄視圖,可以修改、添加和刪除數據。用戶一般需要創(chuàng)建一個CRecordView的派生類并在其對應的對話框模板中加入控件。,,圖11.2 記錄視圖,返回,11.3 應用數據庫,11.3.1 注冊數據源11.3.2 創(chuàng)建應用程序11.3.3 添加資源和代碼,
18、11.3.1 注冊數據源,先建立一個Access數據庫,如圖11.3所示。為了簡便,只包含了一個表,表名為xs,內容也比較簡單,將這個Access數據庫保存為文件student.mdb。,,圖11.3 Access數據庫,返回,ODBC應用程序不能直接使用數據庫,用戶必須為要使用的數據庫注冊數據源。注冊數據源的工作由ODBC管理器完成,該管理器位于Windows控制面板的32位ODBC內。下面為Access數據庫student.md
19、b注冊數據源。(1) 打開控制面板,打開管理工具,雙擊【數據源(ODBC)】圖標,則會顯示一個【ODBC數據源管理器】,如圖11.4所示。在管理器中選擇【用戶DSN】選項卡,該選項卡只對用戶可見,而且只能在用戶當前機器使用。,,返回,(2) 單擊【添加】按鈕,則會彈出一個【創(chuàng)建新數據源】對話框。在該對話框中選擇Microsoft Access Driver (*.mdb),然后單擊【完成】按鈕,如圖11.5所示。(3) 接下來
20、會顯示一個ODBC Microsoft Access安裝對話框,如圖11.6所示,該對話框用來把數據庫與一個數據源名連接起來。在【數據源名】文本框中輸入“My database for VC”,然后單擊【選擇…】按鈕,在隨后彈出的對話框中找到并選擇student.mdb。連續(xù)單擊【確定】按鈕后,一個名為My databaye for VC的新數據源就被注冊到了管理器中。,,返回,,圖11.4 ODBC數據源管理器,返回,,圖11.5
21、 【創(chuàng)建新數據源】對話框,返回,,圖11.6 【ODBC Microsoft Access安裝】對話框,返回,11.3.2 創(chuàng)建應用程序,本程序具有瀏覽記錄集和修改記錄這兩個基本功能?,F在開始建立應用程序。首先完成程序框架的建立,請按下面幾步進行:(1) 啟動Visual Studio .NET,指定一名為DBSample的MFC工程。(2) 選擇應用程序類型,按如圖11.7所示進行設置。(3) 在左側選擇【數據庫支持】,
22、如圖11.8所示,進行數據庫的設置(4) 單擊【數據源】按鈕,在彈出的【選擇數據源】對話框中選擇【機器數據源】選項卡,并選中My database for VC數據源,如圖11.9所示。,返回,(5) 單擊【確定】按鈕,則會打開一個【登錄】對話框,如圖11.10所示。如果數據庫沒有密碼,直接單擊【確定】按鈕即可。(6) 這時出現選擇數據庫對象對話框,展開表,選擇xs表(圖11.11)。單擊【確定】按鈕退出。(7) 單擊【完
23、成】按鈕,建立工程。這時提示可能數據庫會有密碼,如圖11.12所示,這里直接確認,將在下面的介紹中處理這一情況。,返回,,圖11.7 設置程序類型,返回,,圖11.8 設置數據庫支持,返回,,圖11.9 選擇數據源,返回,,圖11.10 【登錄】對話框,返回,,圖11.11 選擇表,返回,,圖11.12 密碼提示,返回,11.3.3 添加資源和代碼,在【資源視圖】對話框中選擇Dialog,雙擊展開(圖11.13),選中IDD
24、_MYSAMPLE_ FORM打開(圖11.14)。按照表11.4所示進行配置。,返回,,圖11.13 資源列表,返回,,圖11.14 界面設計,返回,11.4 DAO編程技術的使用,11.4.1 如何選擇ODBC與DAO11.4.2 DAO應用程序的編寫,,11.4.1 如何選擇ODBC與DAO,由于DAO可以訪問ODBC數據源,下面幾條可以作為DAO替代ODBC的理由:●在某些情況下可獲得更好的性能,特別是在訪問Mi
25、crosoft ●Jet(MDB)數據庫時?!衽cODBC兼容?!馜AO允許進行數據有效檢查?!馜AO允許用戶說明表與表之間的關系。 當然,DAO的出現并不意味著ODBC已經過時了。如果用戶的工作必須嚴格限于ODBC數據源,尤其在開發(fā)Client/Server結構的應用程序時,用ODBC有較好的性能。,返回,11.4.2 DAO應用程序的編寫,1. 編寫MFC DAO應用程序的第一步2. 數據查看選擇3.
26、 帶有DAO的文檔和視圖4. DBMS選擇,返回,1. 編寫MFC DAO應用程序的第一步,若要開始DAO應用程序的編寫,必須做出兩項基本決定:●希望應用程序內如何顯示數據:按窗體方式、按列表方式、按某些其他方式或不顯示數據?!裣M褂煤畏N數據庫管理系統(DBMS)。,返回,2. 數據查看選擇,MFC對不同的查看選擇提供不同程度的支持:●在窗口中一次顯示一個記錄。創(chuàng)建一個CDaoRecordView派生類,并將其連接到基于
27、指定表的CDaoRecordset。這使得●創(chuàng)建簡單的基于窗口的應用程序變得非常容易。一次顯示多個記錄,可以相當容易地將CDaoRecordset連接到● CListView或者CTreeView。在單獨的窗口中或是在拆分窗口的窗格中同時顯示多個數據視圖。,返回,3. 帶有DAO的文檔和視圖,MFC應用程序的最簡單結構是管理MFC文檔對象中的數據和管理在視圖對象中單獨顯示該數據。但是,并不只限制于此結構。其他選擇包括:(1)使
28、用視圖對象,但將文擋作為未使用的附加物處理。 (2)將數據直接繪制到CFrameWnd派生類的工作區(qū)。 (3)使應用程序以對話框為基礎。,返回,4. DBMS選擇,DAO基于Microsoft Jet數據庫引擎。因此,DAO最適合用于Microsoft Jet(MDB)數據庫。DAO也支持訪問外部數據庫,包括某些可安裝的ISAM數據庫(數據庫引擎可直接讀取它)和ODBC數據源。這意味著可以使用DAO編寫與DBMS無關的應用程序
29、,目標是任何Microsoft Jet數據庫引擎可直接讀取的數據庫,或者用戶有相應ODBC驅動程序的數據源。,返回,11.5 自動注冊DSN和創(chuàng)建表,11.5.1 自動注冊DSN11.5.2 用ODBC創(chuàng)建表11.5.3 用DAO創(chuàng)建表,,11.5.1 自動注冊DSN,無論是用ODBC還是DAO類,在訪問ODBC數據源以前,都必須先注冊DSN。通過調用函數SQLConfigDataSource,可以實現自動注冊DSN。當然
30、,用DAO可以直接訪問一些常用的數據庫,而不必通過ODBC來訪問。,返回,11.5.2 用ODBC創(chuàng)建表,由于ODBC類不支持DDL(數據庫定義語言),所以只有通過ODBC API來創(chuàng)建表。程序需要調用CDatabase::ExecuteSQL來直接執(zhí)行SQL語句。,返回,11.5.3 用DAO創(chuàng)建表,由于DAO類直接支持DDL,所以用DAO類創(chuàng)建表比ODBC容易。DAO的CDaoTableDef類提供了對表結構的定義,該類提供了創(chuàng)
31、建表的成員函數。,返回,11.6 ADO編程技術的使用,ADO是Microsoft數據庫應用程序開發(fā)的接口,對于在Windows上編寫數據庫程序的程序員來說,ADO是最常使用的技術了,通過它可以非常簡單地實現數據庫的連接以及數據訪問。它被設計用來同新的數據訪問層OLE DB Provider一起協同工作,以提供通用數據訪問(Universal Data Access)。ADO向我們提供了一個高層的對OLE DB的自動封裝接口,它簡化了
32、數據訪問的過程,增加了數據訪問的靈活性。但是由于ADO是一組由微軟提供的COM組件是建立在微軟所提倡的COM體系結構之上,它的所有接口都是自動化接口,所以在Visual C++ .NET中使用ADO時,要按照使用COM的方式來調用。在這里大概介紹一下Visual C++ .NET中如何調用ADO對數據庫進行訪問的。,,11.7 上 機 指 導,在本次上機指導中,將針對前面幾節(jié)中的內容進行實際上機練習。其主要內容包括:使用數據庫編程技術
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《visual_c--.net程序設計教程與上機指導》課件
- 《visual c#程序設計教程與上機指導》第6章windows程序設計
- 《c--程序設計基礎教程與上機指導》第18課c、c--語言編程格式與技巧
- web程序設計_第6章__web數據庫程序設計
- vb.net程序設計教程第11章圖形應用程序開發(fā)
- 上機實驗指導 c語言程序設計
- visual_c程序設計與應用教程課后答案
- c++程序設計題解與上機指導習題程序.
- visual basic 程序設計教程
- c++程序設計教程與實驗指導
- 《Visual FoxPro數據庫程序設計》網上課教學系統設計與開發(fā).pdf
- 第4章 《c--程序設計教程與實驗指導》-楊國興 類與對象
- 譚浩強c語言程序設計教程學習筆記第8章
- 譚浩強c語言程序設計教程學習筆記第8章
- 《數據庫程序設計》在線測試匯總
- asp與sql網頁數據庫程序設計
- asp與sql網頁數據庫程序設計
- c語言程序設計教程 (第2版)
- 在visual c使用ado存取數據庫
- 外文翻譯---visual c++程序設計
評論
0/150
提交評論