2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2010年10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第1頁,第7章 MFC數(shù)據(jù)庫編程及其應用,重點,1.數(shù)據(jù)庫系統(tǒng)和ODBC,2.CRecordSet的應用,3.示例系統(tǒng)中數(shù)據(jù)庫操作類的設計,2010年10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第2頁,7.1 數(shù)據(jù)庫系統(tǒng)的基本概念,數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫應用系統(tǒng)3部分組成,如右圖:數(shù)據(jù)庫是數(shù)據(jù)的集合,

2、由一個或多個表組成,一般將表中的一行稱作記錄(record)或行(row),將表的列稱作字段(field)或列(column);,數(shù)據(jù)庫應用程序是在數(shù)據(jù)庫管理系統(tǒng)(DBMS)的支持下對數(shù)據(jù)庫中的數(shù)據(jù)進行加工、處理的程序,MFC提供了兩種支持:ODBC和DAO。,數(shù)據(jù)庫系統(tǒng)的組成,數(shù)據(jù)庫管理系統(tǒng)是一套程序,用來定義、管理和處理數(shù)據(jù)庫與應用程序之間的聯(lián)系,例如,F(xiàn)oxPro、Access等;不同的數(shù)據(jù)庫在實現(xiàn)它的數(shù)據(jù)庫管理系統(tǒng)時都有一些不

3、同的特性,因而使得用某個數(shù)據(jù)庫管理系統(tǒng)開發(fā)的數(shù)據(jù)庫應用系統(tǒng)無法在其他數(shù)據(jù)庫管理系統(tǒng)上使用;為了使一個數(shù)據(jù)庫應用系統(tǒng)能夠適用于所有的數(shù)據(jù)庫管理系統(tǒng),人們在數(shù)據(jù)庫應用系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間增加了一個符合某種規(guī)范的標準接口,從而使得按照標準接口設計的數(shù)據(jù)庫應用系統(tǒng)可以訪問所有支持標準接口的數(shù)據(jù)庫管理系統(tǒng)。常用的標準接口有ODBC、DAO、JDBC等,他們之間的關系如圖所示:SQL(Structured Query Language,結構

4、化查詢語言)最早由IBM提出,是專門用來處理關系數(shù)據(jù)庫的基于文本的語言。SQL向數(shù)據(jù)庫提供了完善而一致的接口,它不是獨立的計算機語言,需要DBMS的支持才能執(zhí)行。SQL是一種標準的數(shù)據(jù)庫語言,目前大多數(shù)DBMS都支持它。,2010年10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第3頁,7.2 ODBC基本概念,ODBC是微軟公司開放服務結構中有關數(shù)據(jù)庫的一個組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪

5、問的標準API。這些API利用SQL來完成大部分任務,ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC;基于ODBC的應用程序?qū)?shù)據(jù)庫的操作不依賴于任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應DBMS的ODBC驅(qū)動程序完成,一個完整的ODBC由下列幾個部件組成;應用程序:ODBC管理器:管理安裝的ODBC驅(qū)動程序和管理數(shù)據(jù)源;驅(qū)動程序管理器:包含在ODBC32.DLL中,任務是管理OD

6、BC驅(qū)動程序;ODBC API:給數(shù)據(jù)庫應用程序提供訪問數(shù)據(jù)庫的接口函數(shù);ODBC驅(qū)動程序:一些DLL,提供了ODBC和數(shù)據(jù)庫之間的接口;數(shù)據(jù)源:包含數(shù)據(jù)庫位置和數(shù)據(jù)庫類型的信息。在ODBC中,ODBC API不能直接訪問數(shù)據(jù)庫,必須通過驅(qū)動程序管理器與數(shù)據(jù)庫交換信息。驅(qū)動程序管理器負責將應用程序?qū)DBC API的調(diào)用傳遞給正確的驅(qū)動程序,而驅(qū)動程序在執(zhí)行完相應的操作后,將結果通過驅(qū)動程序管理器返回給應用程序。,ODBC部件關

7、系圖,2010年10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第4頁,7.3 MFC的ODBC類簡介,MFC的ODBC類主要包括有以下幾個:CDatabase類:負責建立與數(shù)據(jù)源的連接; CRecordset類: 該類的一個對象代表從數(shù)據(jù)源選擇的一組記錄(記錄集); CRecordView類:提供了一個表單視圖與某個記錄集直接相連,利用對話框數(shù)據(jù)交換機制(DDX)在記錄集與表單視圖

8、的控件之間傳輸數(shù)據(jù);CFieldExchange類:支持記錄字段數(shù)據(jù)交換(DFX),即記錄集字段數(shù)據(jù)成員與相應的數(shù)據(jù)庫表的字段之間的數(shù)據(jù)交換;CDBException類:代表ODBC產(chǎn)生的異常。概括地講,CDatabase針對某個數(shù)據(jù)庫,它負責連接數(shù)據(jù)源;CRecordset針對數(shù)據(jù)源中的記錄集,它負責對記錄的操作;CRecordView負責界面;CFieldExchange負責CRecordset與數(shù)據(jù)源的數(shù)據(jù)交換。,2010年

9、10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第5頁,先構造一個CDatabase對象,然后調(diào)用Open成員函數(shù):lpszDSN:數(shù)據(jù)源名,也可以在lpszConnect參數(shù)中包括數(shù)據(jù)源名,此時lpszDSN必須為NULL,若兩處均未提供數(shù)據(jù)源名,則會顯示一個數(shù)據(jù)源對話框,用戶可以在該對話框中選擇一個數(shù)據(jù)源;參數(shù)bExclusive:說明是否獨占數(shù)據(jù)源;參數(shù)bReadOnly:True則對數(shù)據(jù)源的連

10、接是只讀的,否則為可讀寫的; 參數(shù)lpszConnect:指定了一個連接字符串。該串中可以包括數(shù)據(jù)源名、用戶賬號和口令等信息,字符串中的ODBC表示要連接到一個ODBC數(shù)據(jù)源上;參數(shù)bUseCursorLib:若為True,則會裝載光標庫,否則不裝載??煺招枰鈽藥?,動態(tài)集不需要光標庫;若連接成功,函數(shù)返回True,否則返回False,若函數(shù)內(nèi)部出現(xiàn)錯誤,則會產(chǎn)生一個異常。一些其它的有用成員函數(shù):,virtual BOOL Op

11、en(LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = "ODBC;", BOOL bUseCursorLib = TRUE);throw(CDBException, CMemoryException);,CDatabase m_db;//在文檔類中嵌入一個CDatabase對象m_db.

12、Open("Student Registration"); //連接到一個名為Student Registration的數(shù)據(jù)源m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN=Student Registration;UID = ZYF;PWD = 1234"); //在連接數(shù)據(jù)源的同時指定了用戶賬號和口令m_db.Open(NULL);//將彈出一個數(shù)據(jù)源對話框,vi

13、rtual void Close();//斷開與數(shù)據(jù)庫的連接,CDatabase的析構函數(shù)中同樣會自動調(diào)用該函數(shù)BOOL IsOpen() const;//返回True則表明當前有一個連接const CString& GetConnect() const;//獲取當前的連接字符串,7.3.1 CDatabase類,2010年10月,重慶理工大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第6頁,1. 動態(tài)集、快照、

14、光標和光標庫,共享數(shù)據(jù)的一個主要問題就是如何協(xié)調(diào)各個用戶對數(shù)據(jù)源的修改,在MFC中這取決于用戶采用哪種記錄集來處理;記錄集主要分為快照(Snapshot)和動態(tài)集(Dynaset)兩種:快照型記錄集提供了對數(shù)據(jù)的靜態(tài)視,當其他用戶改變了記錄時(包括修改、添加和刪除),快照中的記錄不受影響;動態(tài)集提供了數(shù)據(jù)的動態(tài)視,當其他用戶修改或刪除了記錄集中的記錄時,會在動態(tài)集中反映出來。在記錄集中滾動,需要有一個標志來指明滾動后的位置。OD

15、BC驅(qū)動程序會維護一個光標,用來跟蹤記錄集的當前記錄;光標庫是處于ODBC驅(qū)動程序管理器和驅(qū)動程序之間的動態(tài)鏈接庫。光標庫的主要功能是支持快照以及為底層驅(qū)動程序提供雙向滾動能力。光標庫管理快照記錄的緩沖區(qū),該緩沖區(qū)反映本程序?qū)τ涗浀男薷暮蛣h除,但不反映其他用戶對記錄的改變,由此可見,快照實際上相當于當前的光標庫緩沖區(qū);與快照不同,動態(tài)集不用光標庫維持的緩沖區(qū)來存放記錄。,7.3.2 CRecordSet類,2010年10月,重慶理工

16、大學計算機科學與工程學院計算機科學與技術系劉恒洋,共10頁第7頁,2. SQL查詢,記錄集的建立實際上是一個查詢過程,SQL的SELECT語句用來查詢數(shù)據(jù)源。在建立記錄集時,CRecordset會根據(jù)參數(shù)構造一個SELECT語句來查詢數(shù)據(jù)源,并用查詢的結果創(chuàng)建記錄集,SELECT語句的句法如下:如果列名或表名中包含有空格,則必須用方括號把該名稱括起來;,SELECT field-list FROM table-name [WHERE

17、 m_strFilter] [ORDER BY m_strSort],3. 記錄集的建立和關閉,要建立記錄集,首先要構造一個CRecordset派生類對象,然后調(diào)用Open成員函數(shù)查詢數(shù)據(jù)源中的記錄來建立記錄集,CRecordset(CDatabase* pDatabase = NULL); virtual CString GetDefaultConnect(); virtual BOOL Open(UINT nOpenType

18、= AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none);throw(CDBException, CMemoryException); BOOL CanRestart() const;//若支持Requery則返回TrueBOOL IsOpen() const;//若記錄集已建立則返回True,2010年10月,重慶理工大學計算機科學與工程學

19、院計算機科學與技術系劉恒洋,共10頁第8頁,4. 滾動記錄,CRecordset提供了以下所示幾個成員函數(shù)用來在記錄集中滾動:,void MoveNext();//前進一個記錄void MovePrev();//后退一個記錄void MoveFirst();//滾動到記錄集中的第一個記錄void MoveLast();//滾動到記錄集中的最后一個記錄void SetAbsolutePosition(long nRows);//滾

20、動到絕對位置virtual void Move(long nRows, WORD wFetchType = SQL_FETCH_RELATIVE);BOOL IsEOF() const; BOOL IsBOF() const; long GetRecordCount( ) const;,5. 修改、添加和刪除記錄,通過向CDatabase對象的ExecuteSQL成員函數(shù)傳遞SQL語句的方法達到修改、添加和刪除數(shù)據(jù)庫數(shù)據(jù)的目的,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論