第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)_第1頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)_第2頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)_第3頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)_第4頁(yè)
第11章一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)_第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)介

數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用結(jié)構(gòu)分類:?jiǎn)斡脩魯?shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu): 運(yùn)行于PC機(jī)稱桌面DBMS主要產(chǎn)品不完備方面:MicrosoftAccess、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ù)應(yīng)用結(jié)構(gòu)文件服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫(kù)網(wǎng)絡(luò)文件服務(wù)器客戶端文件請(qǐng)求文件工作站1應(yīng)用程序MicrosoftAccess、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):成功、失敗以及數(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公司的SQLServer、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ù)有MicrosoftSQLServer、Orcale、Sybase、DB2和Informix都可作為服務(wù)器端的DBMS,一些桌面數(shù)據(jù)庫(kù)管理系統(tǒng)如Access等也可作為這種結(jié)構(gòu)的DBMS。Web服務(wù)器有Microsoft的IIS(InternetInformationServer)、PWS(PersonalWebServer)Visualc++中的數(shù)據(jù)訪問(wèn)ODBC開(kāi)放數(shù)據(jù)庫(kù)連接DAO(DataAccessObjects)數(shù)據(jù)訪問(wèn)對(duì)象OLEDB技術(shù)ActiveXDataObject(ADO)

1DAO(DataAccessObjects)數(shù)據(jù)訪問(wèn)對(duì)象

DAO使用MicrosoftJet提供的數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象集直接訪問(wèn)DBMS,速度比ODBC要快。VisualC++6.0不支持Acess97以后的mdb數(shù)據(jù)庫(kù),所以Access2000生成的數(shù)據(jù)庫(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)程序使用ODBCAPI時(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ù)互連(ODBC-OpenDataBaseConnectivity)ODBC的體系結(jié)構(gòu)示意圖(4部分)ODBC管理器在Windows2000或WindowsXP下,通過(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.OLEDBOLEDB是一種高性能的、基于COM(組件對(duì)象模型)的數(shù)據(jù)庫(kù)技術(shù)

Microsoft公司20世紀(jì)90年代中期提出的。OLEDB不僅為關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的,而且也是為其它類型的數(shù)據(jù)庫(kù)設(shè)計(jì)的。OLEDB組件由數(shù)據(jù)提供者、數(shù)據(jù)消費(fèi)者和服務(wù)組件組成;數(shù)據(jù)提供者提供數(shù)據(jù),數(shù)據(jù)消費(fèi)者使用數(shù)據(jù),服務(wù)組件處理和傳送數(shù)據(jù)。OLEDB提高了數(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ā)的新接口,是建立在OLEDB之上的高級(jí)數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。避免了開(kāi)發(fā)人員直接使用OLEDB底層接口的麻煩。ADO技術(shù)基于COM(ComponentObjectModel),可以用來(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ù)操作。應(yīng)用程序ADOOLEDB關(guān)系數(shù)據(jù)庫(kù)文本目錄數(shù)據(jù)主機(jī)數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)電子郵件地理信息圖形信息ADO技術(shù)特點(diǎn)易于使用高速訪問(wèn)數(shù)據(jù)源可以訪問(wèn)不同的數(shù)據(jù)源可以用于MicrosoftActiveX頁(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屬性集合PropertiesADO對(duì)象模型提供了7種對(duì)象、4種集合。分別為:連接對(duì)象Connection

常用屬性:ConnectionString:包含用于建立鏈接的信息。ConnectionTimeOut:設(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:執(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)EOF: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ì)記錄集的改變操作;僅向前型游標(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ì)象常用屬性:Count:集合中Field對(duì)象總數(shù)開(kāi)發(fā)ADO應(yīng)用程序的方法使用ADOData控件

簡(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)控件一.ADOData控件可以用ADOData控件快速創(chuàng)建一個(gè)到數(shù)據(jù)庫(kù)的連接;ADOData控件使用Recordset對(duì)象提供對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中數(shù)據(jù)的訪問(wèn),并允許從一個(gè)記錄移動(dòng)到另一個(gè)記錄ADOData控件可以執(zhí)行大部分?jǐn)?shù)據(jù)庫(kù)訪問(wèn)操作,但不能顯示數(shù)據(jù)庫(kù)中數(shù)據(jù)的內(nèi)容,需要與數(shù)據(jù)覺(jué)察控件結(jié)合使用創(chuàng)建一個(gè)基于對(duì)話框的工程,工程名為ADOData將ADOData控件添加到工程:Project/addtoproject/componentsandcontrols,打開(kāi)componentsandcontrolsGallery對(duì)話框:例1:ADOData控件的使用雙擊”registeredActiveXControls”,可以看到已注冊(cè)的ActiveX控件:雙擊ADOData控件后:單擊確定按鈕后彈出confirmclasses窗口:單擊OK后,系統(tǒng)自動(dòng)在工程中添加個(gè)類關(guān)閉窗口后,在工具欄中新増ADOData控件按鈕:ADOData控件的常用屬性(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

返回Recordset對(duì)象中記錄的數(shù)量

將ADOData控件添加到對(duì)話框中,右鍵單擊ADOData控件,打開(kāi)控件屬性窗口,如圖:?jiǎn)螕簟巴ㄓ谩边x項(xiàng)卡,設(shè)置連接屬性,如圖:選擇“使用連接字符串”,單擊“生成”按鈕后:確定單擊“記錄源”選項(xiàng)卡:DataGrid控件添加到工程:MicrosoftDataGridControl,Version6.0(OLEDB)二、數(shù)據(jù)覺(jué)察控件將DataGrid控件添加到對(duì)話框:打開(kāi)控件屬性窗口,如圖:DataSource選擇IDC_ADODC1;設(shè)置Caption;運(yùn)行工程:該系統(tǒng)的主要功能包括:在DataGrid表格中顯示學(xué)生的主要信息;可以添加、修改、刪除學(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類,在使用Connection對(duì)象、Command對(duì)象、Recordset對(duì)象這3個(gè)對(duì)象的時(shí)候,需要定義與之對(duì)應(yīng)的3個(gè)智能指針,分別為#import"c:\programfiles\commonfiles\system\ado\msado15.dll"

no_namespacerename("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();這個(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í)例化:

_ConnectionPtrm_pConnection;m_pConnection.CreateInstance(__uuidof(Connection));或者采用另一種CreateInstance的重載函數(shù):m_pConnection.CreateInstance(“ADODB.Connection”);之后,調(diào)用Connection對(duì)象的Open方法創(chuàng)建數(shù)據(jù)庫(kù)的連接其定義如下:HRESULTConnection15::Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions)參數(shù):ConnectionString:可選,字符串,包含了連接信息UserID:可選,字符串,用戶名Password:可選,字符串,密碼Options:可選,ConnectOptionEnum值,其值如下所示:adModeUnknown:默認(rèn),表示當(dāng)前的許可權(quán)未設(shè)置adModeRead:只讀adModeWrite:只寫(xiě)adModeReadWrite:可以讀

溫馨提示

  • 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)論