第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).ppt_第1頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).ppt_第2頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).ppt_第3頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).ppt_第4頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).ppt_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu),數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用結(jié)構(gòu)分類: 單用戶數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu): 運(yùn)行于PC機(jī)稱桌面DBMS 主要產(chǎn)品 不完備方面:,Microsoft Access、Paradox、Fox系列和DBase系列,數(shù)據(jù)的一致性維護(hù)、完整性檢查及安全性管理方面有許多欠缺,集中式結(jié)構(gòu) 文件服務(wù)器結(jié)構(gòu) 客戶/服務(wù)器式結(jié)構(gòu) 互聯(lián)網(wǎng)應(yīng)用結(jié)構(gòu),多用戶數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu),集中式結(jié)構(gòu) 主機(jī)/終端結(jié)構(gòu)是大型主機(jī)系統(tǒng)使用的結(jié)構(gòu),這種結(jié)構(gòu)是將操作系統(tǒng)、應(yīng)用程序、DBMS、數(shù)據(jù)庫(kù)等數(shù)據(jù)和資源均放在主機(jī)上,以一臺(tái)主機(jī)為核心,連接多個(gè)終端,終端只是作為主機(jī)的一種I/O設(shè)備,所有的應(yīng)用處理均由主機(jī)承擔(dān),多用戶數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)分類:,集中式數(shù)據(jù)庫(kù)

2、應(yīng)用結(jié)構(gòu),文件服務(wù)器結(jié)構(gòu),數(shù)據(jù)庫(kù) 網(wǎng)絡(luò)文件服 務(wù)器,客戶端,文件請(qǐng)求,文件,工作站1 應(yīng)用程序,Microsoft Access、FoxPro是流行的支持文件服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng),客戶服務(wù)器: 通過(guò)對(duì)服務(wù)功能的分布實(shí)現(xiàn)分工服務(wù),其中:,多用戶數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)分類:,客戶/服務(wù)器式數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu),數(shù)據(jù)庫(kù) 服務(wù)器,客戶端,請(qǐng)求,結(jié)果,工作站1 應(yīng)用程序,客戶機(jī)負(fù)責(zé)管理用戶界面,接收用戶數(shù)據(jù),處理應(yīng)用邏輯,生成數(shù)據(jù)庫(kù)服務(wù)請(qǐng)求。然后將這些請(qǐng)求發(fā)送給服務(wù)器,接收服務(wù)器返回的結(jié)果,最后再將這些結(jié)果按一定的格式返回給用戶; 服務(wù)器接收客戶機(jī)的請(qǐng)求,處理這些請(qǐng)求,返回處理結(jié)果(包括執(zhí)行狀態(tài):成功、失敗以及

3、數(shù)據(jù)庫(kù)訪問(wèn)的結(jié)果數(shù)據(jù))給客戶機(jī),同時(shí),服務(wù)器還要進(jìn)行數(shù)據(jù)庫(kù)完整性檢查,維護(hù)數(shù)據(jù)庫(kù)附加的數(shù)據(jù),支持并發(fā)控制等 主流的產(chǎn)品:Microsoft公司的SQL Server、SYBASE公司的Sybase、ORACLE公司的Oracle、INFORMIX公司的Informix和IBM公司的DB2,數(shù)據(jù)庫(kù)服務(wù)器,客戶端,請(qǐng)求,頁(yè)面,瀏覽器,數(shù)據(jù)庫(kù),請(qǐng)求,結(jié)果,互聯(lián)網(wǎng)應(yīng)用結(jié)構(gòu),應(yīng)用程序,Web服務(wù)器,數(shù)據(jù)庫(kù)有Microsoft SQL Server 、 Orcale、Sybase、DB2和Informix都可作為服務(wù)器端的DBMS,一些桌面數(shù)據(jù)庫(kù)管理系統(tǒng)如Access等也可作為這種結(jié)構(gòu)的DBMS。 Web

4、服務(wù)器有 Microsoft的IIS(Internet Information Server)、 PWS(Personal Web Server),Visual c+中的數(shù)據(jù)訪問(wèn),ODBC開(kāi)放數(shù)據(jù)庫(kù)連接 DAO(Data Access Objects )數(shù)據(jù)訪問(wèn)對(duì)象 OLE DB技術(shù) ActiveX Data Object(ADO),1 DAO(Data Access Objects )數(shù)據(jù)訪問(wèn)對(duì)象 DAO使用Microsoft Jet提供的數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象集直接訪問(wèn)DBMS,速度比ODBC要快。 Visual C+6.0不支持Acess97以后的mdb數(shù)據(jù)庫(kù),所以Access2000生成的數(shù)據(jù)

5、庫(kù)需要轉(zhuǎn)換為Acess97格式,微軟公司20世紀(jì)90年代初開(kāi)發(fā)的一套開(kāi)放數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用程序接口規(guī)范,提供了統(tǒng)一的數(shù)據(jù)庫(kù)應(yīng)用編程接口(API函數(shù)) ODBC的工作依賴于數(shù)據(jù)庫(kù)制造商提供的驅(qū)動(dòng)程序 使用ODBC API時(shí),Windows的ODBC管理程序把數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求傳遞給正確的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序使用SQL語(yǔ)句指示DBMS完成數(shù)據(jù)庫(kù)訪問(wèn)工作 使用ODBC時(shí),必須把數(shù)據(jù)庫(kù)注冊(cè)到ODBC驅(qū)動(dòng)程序管理器,可通過(guò)定義一個(gè)DSN(數(shù)據(jù)源名稱)來(lái)完成,2.開(kāi)放數(shù)據(jù)庫(kù)互連(ODBCOpen DataBase Connectivity),ODBC的體系結(jié)構(gòu)示意圖(4部分),ODBC管理器 在Windows200

6、0或Windows XP下,通過(guò)【控制面板】-【管理工具】-【數(shù)據(jù)源ODBC】打開(kāi)ODBC管理器 使用ODBC管理器設(shè)置ODBC數(shù)據(jù)源: 可以定義3種數(shù)據(jù)源: 用戶DSN:只有當(dāng)前用戶可見(jiàn),而且只能用于當(dāng)前計(jì)算機(jī)上 系統(tǒng)DSN:對(duì)當(dāng)前計(jì)算機(jī)上的所有用戶都是可見(jiàn)的 文件DSN:介于用戶DSN和系統(tǒng)DSN之間 設(shè)置Acess數(shù)據(jù)源舉例,3.OLE DB OLE DB 是一種高性能的、基于 COM(組件對(duì)象模型) 的數(shù)據(jù)庫(kù)技術(shù) Microsoft公司20世紀(jì)90年代中期提出的。 OLE DB不僅為關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的,而且也是為其它類型的數(shù)據(jù)庫(kù)設(shè)計(jì)的。 OLE DB組件由數(shù)據(jù)提供者、數(shù)據(jù)消費(fèi)者和服務(wù)組件

7、組成;數(shù)據(jù)提供者提供數(shù)據(jù),數(shù)據(jù)消費(fèi)者使用數(shù)據(jù),服務(wù)組件處理和傳送數(shù)據(jù)。 OLE DB提高了數(shù)據(jù)庫(kù)的訪問(wèn)速度,4. ADO技術(shù)介紹,ADO簡(jiǎn)介 ADO技術(shù)特點(diǎn) ADO對(duì)象模型 開(kāi)發(fā)ADO應(yīng)用程序的方法,ADO簡(jiǎn)介,ADO是Microsoft的數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)的新接口,是建立在OLE DB之上的高級(jí)數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。避免了開(kāi)發(fā)人員直接使用 OLE DB底層接口的麻煩。 ADO技術(shù)基于COM(Component Object Model),可以用來(lái)構(gòu)造可復(fù)用應(yīng)用框架,被多種語(yǔ)言支持,能夠訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)、非關(guān)系數(shù)據(jù)庫(kù)以及所有的文件系統(tǒng)。 另外,ADO還支持各種客戶/服務(wù)器模式與基于Web的數(shù)據(jù)操作。,

8、ADO技術(shù)特點(diǎn),易于使用 高速訪問(wèn)數(shù)據(jù)源 可以訪問(wèn)不同的數(shù)據(jù)源 可以用于Microsoft ActiveX頁(yè) 程序占用的內(nèi)存少,ADO對(duì)象模型,連接對(duì)象Connection 命令對(duì)象Command 記錄集對(duì)象Recordset 域?qū)ο驠ield 參數(shù)對(duì)象Parameter 屬性對(duì)象Property 錯(cuò)誤對(duì)象Error 錯(cuò)誤集合 Errors 參數(shù)集合 Parameters 域集合 Fields 屬性集合 Properties,ADO對(duì)象模型提供了7種對(duì)象、4種集合。分別為:,連接對(duì)象Connection 常用屬性: ConnectionString:包含用于建立鏈接的信息。 Connectio

9、nTimeOut:設(shè)置連接的最長(zhǎng)時(shí)間,缺省值為15秒 Mode:訪問(wèn)權(quán)限設(shè)置 Provider:設(shè)置連接提供者的名稱 主要函數(shù): Open:打開(kāi)到數(shù)據(jù)源的連接 Execute: 執(zhí)行查詢、其它SQL語(yǔ)句、存儲(chǔ)過(guò)程等 Close:關(guān)閉連接,命令對(duì)象Command 常用屬性: 1)ActiveConnection:指明屬于哪一個(gè)Connection對(duì)象。 2)CommandText:設(shè)置命令內(nèi)容,如SQL語(yǔ)句等 3)CommandTimeout :確定執(zhí)行命令最長(zhǎng)的等待時(shí)間 4)CommandType:指明命令類型, 可以是表格名adCmdTable、 SQL語(yǔ)句等. 主要函數(shù): Execute:

10、 執(zhí)行在CommandText中指定的查詢、SQL語(yǔ)句或存儲(chǔ)過(guò)程等,記錄集對(duì)象Recordset 主要函數(shù): Open:打開(kāi)一個(gè)記錄集 Close:關(guān)閉記錄集 MoveFirst:移動(dòng)到記錄集的第一條 MoveLast:移動(dòng)到記錄集的最后一條 MoveNext :移動(dòng)到記錄集中當(dāng)前記錄的后一條 MovePrevious :移動(dòng)到記錄集中當(dāng)前記錄的前一條 Move:移動(dòng)到記錄集中指定位置 AddNew :添加一個(gè)空記錄 Delete:刪除當(dāng)前記錄 Update:將對(duì)記錄集的改動(dòng)保存到數(shù)據(jù)源中,常用屬性: (1) ActiveConnection:指明屬于哪一個(gè)Connection對(duì)。 (2)EO

11、F:EOF=TRUE指當(dāng)前位置位于記錄集中最后一條記錄之后 (3)BOF:BOF=TRUE指當(dāng)前位置位于記錄集中第一條記錄之前 (4)AbsolutePosition:某條記錄在記錄集中的絕對(duì)位置 (5)RecordCount:記錄集中包含的記錄總數(shù) (6)CursorType:指明記錄集的游標(biāo)類型。有動(dòng)態(tài)型、靜態(tài)型、僅向前型和鍵型,對(duì)應(yīng)的參數(shù)分別為adOpenDynamic、adOpenStatic、adOpenForwardOnly和adOpenKeyset. 動(dòng)態(tài)型游標(biāo)允許用戶看到其它用戶對(duì)記錄的增加、修改和刪除; 靜態(tài)型游標(biāo)是記錄集的拷貝,用戶看不到其他用戶對(duì)記錄集的改變操作; 僅向前

12、型游標(biāo)等同于靜態(tài)型游標(biāo),不過(guò)只能在記錄集中向前移動(dòng); 鍵型游標(biāo)同動(dòng)態(tài)型游標(biāo)相似,只不過(guò)它防止用戶看到其它用戶添加的記錄,也不允許對(duì)其他用戶刪除的記錄進(jìn)行訪問(wèn)。,域?qū)ο驠ield:代表字段(列) 常用屬性: Name:返回字段名 Value:設(shè)置字段中的數(shù)據(jù) Type:返回字段的數(shù)據(jù)類型 域集合 Fields Fields包含Recordset對(duì)象的所有Field對(duì)象。每個(gè)Field對(duì)象對(duì)應(yīng)記錄集中的一列。 常用函數(shù): Append:添加新的Field對(duì)象到集合中 Delete:從集合中刪除Field對(duì)象 Refresh:更新集合中的Field對(duì)象 Item:返回集合中的Field對(duì)象 常用屬性

13、: Count:集合中Field對(duì)象總數(shù),開(kāi)發(fā)ADO應(yīng)用程序的方法,使用ADO Data控件 簡(jiǎn)單,用戶只需寫(xiě)相對(duì)較少的代碼,甚至不寫(xiě)一行代碼,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。其缺點(diǎn)是效率比較低,用戶對(duì)程序的控制比較弱,不能充分發(fā)揮ADO的強(qiáng)大功能; 直接使用ADO對(duì)象 這種方法可以非常靈活地控制程序的細(xì)節(jié),而且效率、性能很高,可以充分發(fā)揮ADO的特性。,11.4.1 數(shù)據(jù)庫(kù)訪問(wèn)控件 一.ADO Data控件 可以用ADO Data控件快速創(chuàng)建一個(gè)到數(shù)據(jù)庫(kù)的連接; ADO Data控件使用Recordset對(duì)象提供對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中數(shù)據(jù)的訪問(wèn),并允許從一個(gè)記錄移動(dòng)到另一個(gè)記錄 ADO Data控件可以執(zhí)

14、行大部分?jǐn)?shù)據(jù)庫(kù)訪問(wèn)操作,但不能顯示數(shù)據(jù)庫(kù)中數(shù)據(jù)的內(nèi)容,需要與數(shù)據(jù)覺(jué)察控件結(jié)合使用,創(chuàng)建一個(gè)基于對(duì)話框的工程,工程名為ADOData 將ADO Data控件添加到工程: Project/add to project/components and controls,打開(kāi)components and controls Gallery對(duì)話框:,例1: ADO Data控件的使用,雙擊”registered ActiveX Controls”,可以看到已注冊(cè)的ActiveX控件:,雙擊ADO Data控件后:,單擊確定按鈕后彈出confirm classes窗口:,單擊OK后,系統(tǒng)自動(dòng)在工程中添加個(gè)類

15、關(guān)閉窗口后,在工具欄中新増ADO Data控件按鈕:,ADO Data控件的常用屬性 (1)ConnectionString 用于建立鏈接??梢詾樵搶傩再x予一個(gè)包含建立聯(lián)接信息的文件,稱為數(shù)據(jù)鏈接文件(后綴為UDL),也可以直接賦予鏈接字符串,或使用ODBC鏈接。 (2)ConnectionTimeOut屬性 設(shè)置連接的最長(zhǎng)時(shí)間 (3)RecordSource 設(shè)置一個(gè)數(shù)據(jù)記錄源,可以是表、視圖或SELECT語(yǔ)句等 (4)UserName和Password屬性 用于對(duì)有密碼保護(hù)的數(shù)據(jù)庫(kù)的訪問(wèn)。如果使用鏈接字符串,可以在鏈接字符串中指明這兩個(gè)屬性的值。 BOF和 EOF MaxRecords 返

16、回Recordset對(duì)象中記錄的數(shù)量,將ADO Data控件添加到對(duì)話框中,右鍵單擊ADO Data控件,打開(kāi)控件屬性窗口,如圖:,單擊“通用”選項(xiàng)卡,設(shè)置連接屬性,如圖:,選擇“使用連接字符串”,單擊“生成”按鈕后:,確定,單擊“記錄源”選項(xiàng)卡:,DataGrid控件 添加到工程: Microsoft DataGrid Control,Version 6.0(OLE DB),二、數(shù)據(jù)覺(jué)察控件,將DataGrid控件添加到對(duì)話框:,打開(kāi)控件屬性窗口,如圖:,DataSource選擇IDC_ADODC1; 設(shè)置Caption; 運(yùn)行工程:,該系統(tǒng)的主要功能包括:在DataGrid表格中顯示學(xué)生的

17、主要信息;可以添加、修改、刪除學(xué)生數(shù)據(jù),11.4.2 使用ADO對(duì)象開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,初始化OLE/COM庫(kù)環(huán)境 引入ADO庫(kù)文件 用connection對(duì)象連接數(shù)據(jù)庫(kù) 利用建立好的連接,通過(guò)connection、Command對(duì)象執(zhí)行SQL命令,或利用Recordset對(duì)象取得結(jié)果記錄集 記錄集的遍歷、更新 斷開(kāi)連接,結(jié)束,ADO中的智能指針,_ConnectionPtr :通過(guò)該指針操作Connection對(duì)象 _CommandPtr :通過(guò)該指針操作Command對(duì)象 _RecordsetPtr :通過(guò)該指針操作Recordset對(duì)象,使用ADO對(duì)象時(shí)沒(méi)有相關(guān)的MFC類,在使用Conn

18、ection對(duì)象、Command對(duì)象、Recordset對(duì)象這3個(gè)對(duì)象的時(shí)候,需要定義與之對(duì)應(yīng)的3個(gè)智能指針,分別為,#import c:program filescommon filessystemadomsado15.dll no_namespace rename (EOF, adoEOF),在“stdafx.h”中引入ADO庫(kù),初始化OLE/COM庫(kù)環(huán)境,在能夠使用ADO對(duì)象之前,必須為應(yīng)用程序初始化COM環(huán)境。代碼如下: : CoInitialize(NULL); 當(dāng)完成所有的ADO活動(dòng)時(shí),還必須通過(guò)調(diào)用函數(shù)CoUnitialize關(guān)閉COM環(huán)境,代碼如下: :CoUnitialize

19、(); 這個(gè)函數(shù)可清除COM環(huán)境,并準(zhǔn)備關(guān)閉應(yīng)用程序。 還可用:AfxOleInit(),該函數(shù)可以自動(dòng)實(shí)現(xiàn)初始化COM環(huán)境和結(jié)束時(shí)關(guān)閉COM的操作,創(chuàng)建ADO與數(shù)據(jù)源的連接,當(dāng)初始化COM環(huán)境后,就可以創(chuàng)建與數(shù)據(jù)庫(kù)的連接。首先定義一個(gè)_ConnectionPtr類型指針,然后調(diào)用CreateInstance方法實(shí)例化: _ConnectionPtr m_pConnection; m_pConnection. CreateInstance(_uuidof(Connection); 或者采用另一種CreateInstance的重載函數(shù): m_pConnection. CreateInstance

20、(“ADODB.Connection”);,之后,調(diào)用Connection對(duì)象的Open方法創(chuàng)建數(shù)據(jù)庫(kù)的連接 其定義如下: HRESULT Connection15:Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password,long Options) 參數(shù): ConnectionString:可選,字符串,包含了連接信息 UserID:可選,字符串,用戶名 Password:可選,字符串,密碼 Options:可選,ConnectOptionEnum值,其值如下所示: adModeUnknown:默認(rèn),表示當(dāng)前的許可權(quán)未設(shè)置

21、 adModeRead:只讀 adModeWrite:只寫(xiě) adModeReadWrite:可以讀寫(xiě) .,AfxOleInit(); m_pConnection. CreateInstance(_uuidof(Connection); try m_pConnection-Open(“Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Demo.mdb” , “” , “”, adModeUnknown); catch(_com_error e) /處理異常 AfxMessageBox(e.ErrorMessage(); ,其它常用的連接方式: 通過(guò)DSN

22、數(shù)據(jù)源對(duì)支持ODBC的數(shù)據(jù)庫(kù)進(jìn)行連接: m_pConnection-Open(“ Data Source=Demo;UID=sa;PWD=;” , “” , “”, adModeUnknown); 不通過(guò)DSN對(duì)SQL SERVER數(shù)據(jù)庫(kù)的鏈接: m_pConnection-Open(“ driver=SQL Server;Server=127.0.0.1;DATABASE=Demo;UID=sa;PWD=” , “” , “”, adModeUnknown); 使用UDL文件鏈接: m_pConnection-Open(“File Name=cmydata.udl” , “” , “”, N

23、ULL); 新建】-【Microsoft數(shù)據(jù)連接】 新建一個(gè)文本文件,再將后綴改為”.udl”, 雙擊udl文件,可視化地完成數(shù)據(jù)連接,獲得記錄集,_RecordsetPtr m_pRecordset; /定義記錄集指針 m_pRecordset.CreateInstance(_uuidof(Recordset); /實(shí)例化 打開(kāi)記錄集,打開(kāi)記錄集方法: 用Connection對(duì)象的Execute方法執(zhí)行SQL命令 用Command對(duì)象執(zhí)行SQL命令 用Recordset對(duì)象的Open函數(shù)打開(kāi)記錄集 HRESULT Recordset 15:Open(const_variant_t BSTR

24、bstrSQL=strSql.AllocSysString(); m_pRecordset-Open(“select * from STUDENT”, theApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); /打開(kāi)記錄集 Catch(_com_error *e) AfxMessageBox(e-ErrorMessage(); ,遍歷記錄集,MoveFirst() MoveLast() MoveNext() MovePrevious() Try while(!m_pRecordset

25、-adoEOF) m_pRecordset- MoveNext() ; Catch(_com_error *e) AfxMessageBox(e-ErrorMessage(); ,訪問(wèn)記錄集中的數(shù)據(jù),GetCollect () GetItem(),_ Variant_t theVal; /從ADO記錄集得到的數(shù)據(jù)都是Variant型 CString strName; theVal=m_pRecordset-GetCollect(“NAME”); if(theVal.vt!=VT_NULL) strName=(LPCSTR)_bstr_t(theValue); theVal=m_pRecords

26、et-Fields-GetItem(“AGE”)-Value(); if(theVal.vt!=VT_NULL) nAge=theVal.iVal;,添加記錄,使用記錄集對(duì)象的AddNew方法,CString m_Name= “王晶晶” ; long m_Age=30; m_pRecordset-AddNew( ); m_pRecordset-PutCollect(“NAME”,_ Variant_t(m_Name); m_pRecordset-PutCollect(“AGE”, m_Age ); m_pRecordset-Update( );,修改記錄,CString m_Name= “王晶

27、晶” ; long m_Age=30; m_pRecordset-PutCollect(“NAME”,_ Variant_t(m_Name); m_pRecordset-PutCollect(“AGE”, m_Age ); m_pRecordset-Update( );,查詢記錄,CString m_Name= “王晶晶” ; CString m_class=“123”; CString strSql; strSql.Format(“SELECT *FROM student WHERE Name=%s AND Class=%s”, m_Name, m_class); m_pRecset-Ope

28、n(strSql.AllocSysString(), theApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);,使用ADO對(duì)象開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,在文件Stdfx.h文件中增加引入ADO庫(kù)的代碼 #import c:program filescommon filessystemadomsado15.dll no_namespace rename (EOF, adoEOF),步驟一 引入ADO庫(kù),二、初始化COM環(huán)境,創(chuàng)建連接對(duì)象,在應(yīng)用程序類所在的代碼區(qū)(*App.cpp)最前面定義

29、全局變量 _ConnectionPtr m_pConnection; 并在”*App.h”中加入: extern _ConnectionPtr m_pConnection; BOOL CADObApp:InitInstance() AfxOleInit( ); m_pConnection.CreateInstance(ADODB.Connection); m_pConnection- Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=studentDB.mdb,adModeUnknown); . ,三、打開(kāi)記錄集(初始化對(duì)話框 ),在對(duì)話框類加

30、入成員變量: protected: _RecordsetPtr m_pRecordset; 用ClassWizard給窗口中每個(gè)編輯框添加成員變量,本例添加的有: m_stuid, m_name,m_age, m_sex, m_subject 在對(duì)話框類的初始化函數(shù)中加入以下代碼: m_pRecordset.CreateInstance(_uuidof(Recordset); m_pRecordset-Open(SELECT * FROM STUDENT, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic,adCm

31、dText); /顯示記錄到界面上 DispRecord();,顯示記錄函數(shù),void CADODlg:DispRecord() _variant_t theValue; /獲取學(xué)號(hào)的值 if(!m_pRecordset-adoEOF) theValue=m_pRecordset-GetCollect(stuID); if(theValue.vt!=VT_NULL) m_stuid=(char*)_bstr_t(theValue); theValue=m_pRecordset-GetCollect(name); /獲取學(xué)生姓名 if(theValue.vt!=VT_NULL) m_name=(

32、char *)_bstr_t(theValue); theValue=m_pRecordset-GetCollect(age); /獲取學(xué)生年齡 if(theValue.vt!=VT_NULL) m_age=theValue.iVal; theValue=m_pRecordset-GetCollect(sex); /獲取學(xué)生性別 if(theValue.vt!=VT_NULL) m_sex=(char *)_bstr_t(theValue); theValue=m_pRecordset-GetCollect(subject); /獲取學(xué)生專業(yè) if(theValue.vt!=VT_NULL)

33、m_subject=(char *)_bstr_t(theValue); UpdateData(FALSE);,瀏覽記錄,void CADODlg:OnNextButton() /后一條 / TODO: Add your control notification handler code here m_pRecordset-MoveNext(); if(m_pRecordset-adoEOF) m_pRecordset-MoveLast(); DispRecord(); void CADObDlg:OnPreButton() /前一條 / TODO: Add your control notification handler code here m_pRecordset-MovePrevious(); if(m_pRecordset-adoBOF) m_pRecordset-MoveFirst(); DispRecord(); ,添加記錄,void CADObDlg:OnAddButton() / TODO: Add your control notification handler code here RefreshData(

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論