第11章數(shù)據(jù)庫應(yīng)用開發(fā)—2_第1頁
第11章數(shù)據(jù)庫應(yīng)用開發(fā)—2_第2頁
第11章數(shù)據(jù)庫應(yīng)用開發(fā)—2_第3頁
第11章數(shù)據(jù)庫應(yīng)用開發(fā)—2_第4頁
第11章數(shù)據(jù)庫應(yīng)用開發(fā)—2_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第11章 數(shù)據(jù)庫應(yīng)用開發(fā) 目 錄 數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu) 11.1 數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù) 11.2 數(shù)據(jù)庫應(yīng)用開發(fā)實踐數(shù)據(jù)庫應(yīng)用開發(fā)實踐 11.3 如何訪問數(shù)據(jù)庫中的數(shù)據(jù) DBA: 通過DBMS工具來訪問 如SQL Server的企業(yè)管理器、查詢處理器 最終用戶: 通過客戶端工具或應(yīng)用程序的GUI來訪問 如表單、報表等 應(yīng)用程序員: 通過API來訪問 在應(yīng)用程序中訪問 數(shù)據(jù)庫訪問技術(shù) 數(shù)據(jù)庫訪問技術(shù): 為了使不同的程序員能夠在各種應(yīng)用程序中訪問不 同的數(shù)據(jù)庫 一組標(biāo)準(zhǔn)化的技術(shù) 數(shù)據(jù)庫應(yīng)用程序的精髓: 標(biāo)準(zhǔn)化的數(shù)據(jù)庫查詢語言:SQL 通用的數(shù)據(jù)庫訪問技術(shù):ODBC、AD

2、O ODBC API和ODBC庫 ODBC:Open DataBase Connectivity,開放數(shù)據(jù)庫 連接 是Microsoft定義的一種數(shù)據(jù)庫訪問標(biāo)準(zhǔn),一個 ODBC應(yīng)用程序可以訪問在本地數(shù)據(jù)庫上的數(shù)據(jù), 也可以進行擴展,于訪問多種異構(gòu)平臺上的數(shù)據(jù) 庫。 ODBC本質(zhì)上是一組數(shù)據(jù)庫訪問的API。表面上看 ODBC由一組函數(shù)組成,實質(zhì)上其核心是SQL。 ODBC API的主要功能是將SQL語句發(fā)送到目標(biāo)數(shù)據(jù) 庫中,然后對這些語句產(chǎn)生的結(jié)果進行處理。 ODBC庫是對ODBC API的封裝,如MFC ODBC是在 Microsoft MFC中封裝了ODBC API的產(chǎn)物。 ODBC體系結(jié)構(gòu)

3、 ODBC組件 應(yīng)用程序不是直接調(diào)用ODBC驅(qū)動程序,而是先調(diào) 用ODBC驅(qū)動程序管理器提供的API,而ODBC驅(qū)動 程序管理器再調(diào)用相應(yīng)的ODBC驅(qū)動程序,這種間 接的調(diào)用方式使得不管是連接到什么數(shù)據(jù)庫都可 以按照一致的方式來調(diào)用。 應(yīng)用程序通過專為DBMS編寫的ODBC驅(qū)動程序, 而不是直接使用DBMS的工作方式,獨立于DBMS。 驅(qū)動程序?qū)⑦@些調(diào)用轉(zhuǎn)換成DBMS可使用的命令, 因而簡化了開發(fā)人員的工作,使得廣泛的數(shù)據(jù)源 都可以使用它。 MFC DAO DAO:Data Access Object,數(shù)據(jù)訪問對象 DAO提供一組分層對象,這些對象使用 Microsoft Jet數(shù)據(jù)庫引擎訪問

4、下列對象中的 數(shù)據(jù)和數(shù)據(jù)庫結(jié)構(gòu) Microsoft Jet (.MDB) 數(shù)據(jù)庫 ODBC數(shù)據(jù)源,使用ODBC驅(qū)動程序 可安裝的ISAM數(shù)據(jù)庫(如dBASE和Paradox) 與ODBC一樣,DAO提供了一組API,而MFC 也提供了一組DAO類,封裝了底層的API, 從而簡化了程序的開發(fā) DAO應(yīng)用程序訪問數(shù)據(jù)的原理 DAO應(yīng)用程序訪問數(shù)據(jù)的原理 DAO和Jet數(shù)據(jù)庫引擎一起工作。如果該數(shù)據(jù)庫是一個本 地的Access數(shù)據(jù)庫或者其他ISAM類型的數(shù)據(jù)庫,那么Jet 引擎加載相應(yīng)的數(shù)據(jù)庫驅(qū)動程序。如果Jet正在使用遠程 數(shù)據(jù)庫,那么該引擎加載ODBC驅(qū)動程序管理器,利用 ODBC調(diào)用來訪問遠程

5、ODBC數(shù)據(jù)庫。 ODBC的工作依賴于數(shù)據(jù)庫制造商提供的驅(qū)動程序,而 DAO直接利用Microsoft Jet引擎提供的數(shù)據(jù)庫訪問對象集 進行工作,這使得DAO在訪問Access、FoxPro、dBase、 Paradox、Excel等數(shù)據(jù)庫時具有更好的性能。 RDO RDO:Remote Data Objects,遠程數(shù)據(jù)對象 作為DAO的繼承者,RDO將數(shù)據(jù)訪問對象DAO提供的易編 程性和ODBC API提供的高性能有效地結(jié)合在一起。 DAO是一種位于Microsoft Jet引擎之上的對象層,而RDO封 裝了ODBC API的對象層。RDO沒有Jet引擎的高開銷,再加 上與ODBC的緊密

6、關(guān)系,使得它訪問ODBC兼容的數(shù)據(jù)庫(如 SQL Server)時具有比DAO更高的性能。 雖然RDO已被后來發(fā)展起來的ADO所取代,但是RDO與 ODBC的密切關(guān)系使得RDO在某些情況下的性能比ADO更加 突出。 OLE DB OLE DB:Object Linking and Embedding, Database,對象鏈接嵌入數(shù)據(jù)庫 是Microsoft開發(fā)的一種高性能的、基于 COM的數(shù)據(jù)庫技術(shù)。 OLE DB和其他Microsoft數(shù)據(jù)庫技術(shù)的不同之 處在于其提供通用數(shù)據(jù)訪問的方式: 其一是分布式查詢或統(tǒng)一訪問多個(分布式)數(shù) 據(jù)源功能; 其二是能夠使非DBMS數(shù)據(jù)源可由數(shù)據(jù)庫應(yīng)用程

7、 序訪問。 OLE DB使用者和提供者 使用OLE DB的應(yīng)用程序可以分為兩種:OLE DB提供者(OLE DB Provider)和OLE DB使用者 (OLE DB Consumer) OLE DB提供者 OLE DB使用者就是使用OLE DB接口的應(yīng)用程序。 OLE DB提供者則負責(zé)訪問數(shù)據(jù)源,并通過OLE DB接口 向OLE DB使用者提供數(shù)據(jù)。 與ODBC類似,每一個不同的OLE DB數(shù)據(jù)源都是用自己 相應(yīng)的OLE DB提供者。 SQL Server 2000中包含了以下OLE DB提供者: OLE DB Provider for SQL Server OLE DB Provider

8、 for ODBC OLE DB Provider for Jet OLE DB Provider for DTS Packages OLE DB Provider for Oracle 通過OLE DB提供者訪問不同的數(shù) 據(jù)源 ADO ADO:ActiveX Data Objects技術(shù) ADO是基于OLE DB的訪問接口,它繼承了OLE DB技術(shù)的優(yōu) 點,并且對OLE DB的接口做了封裝,定義了ADO對象,簡 化了程序的開發(fā)。 ADO是DAO/RDO的后繼產(chǎn)物,ADO 2.0在功能上與RDO更相 似,區(qū)別在于: ADO是OLE DB的COM包裝,允許使用任何數(shù)據(jù)源, 不只是已索引的、連續(xù)的

9、訪問方法(ISAM)和基于 SQL的數(shù)據(jù)庫 RDO是ODBC的COM包裝。ODBC是一個基于C的API, 允許通用用途(異類)的數(shù)據(jù)訪問。但是,RDO依賴 SQL作為命令語言來訪問數(shù)據(jù) ADO .NET ADO .NET是微軟在.NET Framework中負責(zé)數(shù)據(jù)訪問的類庫 集,它是基于在COM時代奠基的OLE DB技術(shù)以及.NET Framework的類庫和編程語言發(fā)展而來的,它可以讓.NET 上的任何編程語言能夠連接并訪問關(guān)系數(shù)據(jù)庫與非數(shù)據(jù)庫 型數(shù)據(jù)來源(例如XML,Excel或是文本文檔數(shù)據(jù)),或是 獨立出來作為處理應(yīng)用程序數(shù)據(jù)的類對象。 在ADO .NET中,可以使用兩個組件來訪問和

10、處理數(shù) 據(jù):.NET Framework數(shù)據(jù)提供程序(.NET Data Provider)和 DataSet。 .NET Framework數(shù)據(jù)提供程序 .NET Framework數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫、執(zhí) 行命令和檢索結(jié)果。 .NET Framework數(shù)據(jù)提供程序是專門為數(shù)據(jù)處理以及 快速地只進、只讀訪問數(shù)據(jù)而設(shè)計的組件: Connection對象提供與數(shù)據(jù)源的連接。 Command對象使得能夠訪問用于返回數(shù)據(jù)、修 改數(shù)據(jù)、運行存儲過程以及發(fā)送或檢索參數(shù)信 息的數(shù)據(jù)庫命令。 DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。 DataAdapter提供連接DataSet對象和數(shù)據(jù)

11、源的橋 梁。DataAdapter使用Command對象在數(shù)據(jù)源中 執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中, 并使得DataSet中的數(shù)據(jù)更改與數(shù)據(jù)源保持一致。 ADO .NET DataSet ADO .NET DataSet專門為獨立于任何數(shù)據(jù)源 的數(shù)據(jù)訪問而設(shè)計。 它可以用于多種不同的數(shù)據(jù)源,用于XML數(shù) 據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。 DataSet包含一個或多個DataTable對象的集 合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān) DataTable對象中數(shù)據(jù)的主碼、外碼、約束 和關(guān)系信息組成。 ADO .NET結(jié)構(gòu) JDBC JDBC:Java database conne

12、ctivity,Java數(shù)據(jù)庫連接 是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫 的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù) 據(jù)的方法 JDBC與ODBC: ODBC 不適合直接在 Java 中使用,因為它使用 C 語言接口 JDBC API 對于基本的 SQL 抽象和概念是一種自 然的 Java 接口。它建立在 ODBC 上而不是從零 開始 JDBC 以 Java 風(fēng)格與優(yōu)點為基礎(chǔ)并進行優(yōu)化,因 此更加易于使用 Java程序連接數(shù)據(jù)庫的方法 JDBC驅(qū)動程序的類型: JDBC-ODBC橋加ODBC驅(qū)動程序:利用ODBC驅(qū)動 程序提供JDBC訪問 本地API:這種類型的驅(qū)動通過客戶端

13、加載數(shù)據(jù) 庫廠商提供的本地代碼庫(C/C+等)來訪問數(shù)據(jù) 庫 JDBC網(wǎng)絡(luò)的純Java驅(qū)動程序:這種驅(qū)動程序?qū)?JDBC轉(zhuǎn)換為與DBMS無關(guān)的網(wǎng)絡(luò)協(xié)議,之后這種 協(xié)議又被某個服務(wù)器轉(zhuǎn)換為一種DBMS協(xié)議 本地協(xié)議純Java驅(qū)動程序:這種類型的驅(qū)動程 序?qū)DBC調(diào)用直接轉(zhuǎn)換為DBMS所使用的網(wǎng)絡(luò)協(xié) 議 第(3)、(4)類驅(qū)動程序?qū)⒊蔀閺腏DBC訪問數(shù) 據(jù)庫的首選方法。 數(shù)據(jù)庫訪問技術(shù)小結(jié)(1) ODBC:第一個使用SQL訪問不同關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪 問技術(shù) DAO和RDO: ODBC使用低層接口,使用ODBC比較麻煩。 DAO是建立在Microsoft Jet基礎(chǔ)之上的,使用 DAO是最快速、最

14、有效地連接Access數(shù)據(jù)庫的方 法。 DAO也可以連接到非Access數(shù)據(jù)庫,但是需要 Jet引擎解釋DAO和ODBC之間的調(diào)用,這導(dǎo)致了 較慢的連接速度和額外的開銷 RDO為ODBC提供了一個COM的封裝 RDO的目的是簡化ODBC的開發(fā)和在Visual Basic 和VBA程序中使用ODBC 數(shù)據(jù)庫訪問技術(shù)小結(jié)(2) OLE DB: OLE DB建立于ODBC之上,并將此技術(shù)擴展為提 供更高級數(shù)據(jù)訪問接口的組件結(jié)構(gòu) OLE DB是一個針對SQL數(shù)據(jù)源和非SQL數(shù)據(jù)源(例 如郵件和目錄)進行操作的API ADO 類似于ODBC,OLE DB也是屬于低層接口,這為 OLE DB的使用帶來了障

15、礙 ADO是OLE DB的COM包裝 ADO主要為連接的數(shù)據(jù)訪問而設(shè)計,這意味著 不論是瀏覽或更新數(shù)據(jù)都必須是實時的,這種 連接的訪問模式占用服務(wù)器端的重要資源 數(shù)據(jù)庫訪問技術(shù)小結(jié)(3) ADO .NET: ADO .NET滿足了ADO無法滿足的三個重要需求: 提供了離線的數(shù)據(jù)訪問模型,這對Web環(huán)境至關(guān)重要; 提供了與XML的緊密集成; 還提供了與.NET Framework的無縫集成 JDBC:JDBC是一種用于執(zhí)行SQL語句的Java API,可以為 多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問接口 JDO: 提供了透明的對象存儲,存儲數(shù)據(jù)對象完全不需 要額外的代碼(如JDBC API的使用) JDO提

16、供到任何數(shù)據(jù)底層的存儲功能,比如關(guān)系數(shù) 據(jù)庫、文件、XML及對象數(shù)據(jù)庫等,使得應(yīng)用可 移植性更強 數(shù)據(jù)庫訪問技術(shù)小結(jié)(4) 數(shù)據(jù)訪問技術(shù)的發(fā)展呈現(xiàn)出以下態(tài)勢: 高級化:即對象模型越來越簡單,調(diào)用越來越容易, 調(diào)用方法一般與底層無關(guān); 通用化:即能夠以一種統(tǒng)一的方式訪問各種異構(gòu)數(shù) 據(jù)源,如關(guān)系數(shù)據(jù)庫、XML數(shù)據(jù)、文本等; 高效化:得益于各種優(yōu)化技術(shù),現(xiàn)在的數(shù)據(jù)訪問技 術(shù)能夠針對各種數(shù)據(jù)源采用最合適的訪問技術(shù)。同 時,離線的數(shù)據(jù)訪問模式大大降低了與服務(wù)器的交 互,也減輕了服務(wù)器的負擔(dān),提高了整體性能。 數(shù)據(jù)庫訪問技術(shù)的選擇: 在.NET環(huán)境下開發(fā)應(yīng)用應(yīng)該首選ADO .NET 在Windows平臺非

17、.NET環(huán)境下開發(fā)應(yīng)用一般都可以 使用ADO 目 錄 數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu) 11.1 數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù) 11.2 數(shù)據(jù)庫應(yīng)用開發(fā)實踐數(shù)據(jù)庫應(yīng)用開發(fā)實踐 11.3 ADO編程對象模型 ADO提供類和對象以完成以下活動: 連接到數(shù)據(jù)源(Connection),并可選擇開始一個事務(wù); 可選擇創(chuàng)建對象來表示SQL命令(Command); 可選擇在SQL命令中指定列、表和值作為變量參數(shù)(Parameter); 執(zhí)行命令(Command、Connection 或 Recordset); 如果命令按行返回,則將行存儲在緩存中(Recordset); 可選擇創(chuàng)建緩存視圖,以便能

18、對數(shù)據(jù)進行排序、篩選和定位 (Recordset); 通過添加、刪除或更改行和列編輯數(shù)據(jù)(Recordset); 在適當(dāng)情況下,使用緩存中的更改內(nèi)容來更新數(shù)據(jù)源(Recordset); 如果使用了事務(wù),則可以接受或拒絕在完成事務(wù)期間所作的更改 并結(jié)束事務(wù)(Connection) ADO對象模型中的對象及其說明 對象對象說明說明 Connection代表打開的、與數(shù)據(jù)源的連接 CommandCommand對象定義了將對數(shù)據(jù)源執(zhí)行的指定命令 Parameter 代表與基于參數(shù)化查詢或存儲過程的Command對象相關(guān)聯(lián)的參數(shù)或自 變量 Recordset 代表來自基本表或命令執(zhí)行結(jié)果的記錄的集合。任

19、何時候,Recordset 對象所指的當(dāng)前記錄均為集合內(nèi)的單個記錄 Field代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列 Error包含與單個操作(涉及提供者)有關(guān)的數(shù)據(jù)訪問錯誤的詳細信息 Property代表由提供者定義的ADO對象的動態(tài)特性 ADO 數(shù)據(jù)集合及其說明 集合集合說明說明 Errors包含為響應(yīng)涉及提供者的單個錯誤而創(chuàng)建的 所有Error對象。 Fields包含Recordset對象的所有Field對象。 Parameters包含Command對象的所有Parameter對象。 Properties包含指定對象實例的所有Property對象。 ADO對象和數(shù)據(jù)集合之間的關(guān)系 Connect

20、ion 對象 Connection 對象代表打開的、與數(shù)據(jù)源的連接 用Connection對象的可執(zhí)行下列操作: 在打開連接前使用ConnectionString、ConnectionTimeout和Mode屬性對連接進 行配置 設(shè)置CursorLocation屬性以便調(diào)用支持批更新的“客戶端游標(biāo)提供者” 使用DefaultDatabase屬性設(shè)置連接的默認數(shù)據(jù)庫 使用IsolationLevel屬性為在連接上打開的事務(wù)設(shè)置隔離級別 使用Provider屬性指定OLE DB提供者 使用Open方法建立到數(shù)據(jù)源的物理連接,使用Close方法將其斷開 使用Execute方法執(zhí)行連接的命令,并使用C

21、ommandTimeout屬性對執(zhí)行進行配 置 使用BeginTrans、CommitTrans和RollbackTrans方法以及Attributes屬性管理打開 的連接上的事務(wù)(如果提供者支持則包括嵌套的事務(wù)) 使用Errors集合檢查數(shù)據(jù)源返回的錯誤 通過Version屬性讀取使用中的ADO執(zhí)行版本 使用OpenSchema方法獲取數(shù)據(jù)庫模式信息 Command 對象 Command對象定義了將對數(shù)據(jù)源執(zhí)行的指定命 令 使用Command對象可進行下列操作: 使用CommandText屬性定義命令(如SQL語句)的可執(zhí)行文本 通過Parameter對象和Parameters集合定義參數(shù)化

22、查詢或存儲過程參數(shù) 使用Execute方法執(zhí)行命令并在適當(dāng)?shù)臅r候返回Recordset對象 執(zhí)行前應(yīng)使用CommandType屬性指定命令類型以優(yōu)化性能 使用Prepared屬性決定提供者是否在執(zhí)行前保存準(zhǔn)備好(或編譯好)的命 令版本 使用CommandTimeout屬性設(shè)置提供者等待命令執(zhí)行的秒數(shù) 通過設(shè)置ActiveConnection屬性使打開的連接與Command對象關(guān)聯(lián) 設(shè)置Name屬性將Command標(biāo)識為與Connection對象關(guān)聯(lián)的方法 將Command對象傳送給Recordset的Source屬性以便獲取數(shù)據(jù) Parameter對象 Parameter對象代表與基于參數(shù)化查

23、詢或存 儲過程的Command對象相關(guān)聯(lián)的參數(shù)或自 變量 使用Parameter對象可進行如下操作: 使用Name屬性可設(shè)置或返回參數(shù)名稱; 使用Value屬性可設(shè)置或返回參數(shù)值; 使用Attributes和Direction、Precision、 NumericScale、Size以及Type屬性可設(shè)置或返回 參數(shù)特性; 使用AppendChunk方法可將長整型二進制或字 符數(shù)據(jù)傳遞給參數(shù) Recordset對象 Recordset對象表示來自基本表或命令執(zhí)行結(jié)果的記錄 集合。任何時候,Recordset對象所指的當(dāng)前記錄均為 集合內(nèi)的單個記錄。 使用ADO時,通過Recordset對象可對

24、幾乎所有數(shù)據(jù)進 行操作。所有Recordset對象均使用記錄(行)和字段(列) 進行構(gòu)造。 可以創(chuàng)建所需數(shù)量的Recordset對象。 打開Recordset時,當(dāng)前記錄位于第一個記錄(如果有), 并且BOF和EOF屬性被設(shè)置為False。如果沒有記錄, BOF和EOF屬性設(shè)置是True。 Recordset對象 可以使用MoveFirst、MoveLast、MoveNext、 MovePrevious和Move方法,以及AbsolutePosition、 AbsolutePage和Filter屬性來重新確定當(dāng)前記錄的位置 Recordset對象可支持兩類更新: 使用立即更新,一旦調(diào)用Upda

25、te方法,對數(shù)據(jù) 的所有更改將被立即寫入基本數(shù)據(jù)源。也可以 使用AddNew和Update方法將值的數(shù)組作為參數(shù) 傳遞,同時更新記錄的若干字段。 如果提供者支持批更新,可以使提供者將多個 記錄的更改存入緩存,然后使用UpdateBatch方 法在單個調(diào)用中將它們傳送給數(shù)據(jù)庫。 Field對象 Field對象代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列 使用Field對象可進行如下操作: 使用Name屬性可返回字段名; 使用Value屬性可查看或更改字段中的數(shù)據(jù); 使用Type、Precision和NumericScale屬性可返回字段的基本特性; 使用DefinedSize屬性可返回已聲明的字段大??; 使用

26、ActualSize屬性可返回給定字段中數(shù)據(jù)的實際大??; 使用Attributes屬性和Properties集合可決定對于給定字段哪些類型 的功能受到支持; 使用AppendChunk和GetChunk方法可處理包含長二進制或長字符 數(shù)據(jù)的字段值; 如果提供者支持批更新,可使用OriginalValue和UnderlyingValue屬 性在批更新期間解決字段值之間的差異。 Error對象 Error對象包含與單個操作有關(guān)的數(shù)據(jù)訪問錯誤的詳細信 通過Error對象可獲得每個錯誤的詳細信息,包括: Description屬性,包含錯誤的文本; Number屬性,包含錯誤常量的長整型整數(shù)值; So

27、urce屬性,標(biāo)識產(chǎn)生錯誤的對象。在向數(shù)據(jù)源發(fā) 出請求之后,如果Errors集合中有多個Error對象, 則將會用到該屬性; SQLState和NativeError屬性,提供來自SQL數(shù)據(jù)源 的信息。 Property對象 Property對象代表由提供者定義的ADO對象 的動態(tài)特征。 ADO對象有兩種類型的屬性:內(nèi)置屬性和動 態(tài)屬性 內(nèi)置屬性是在ADO中實現(xiàn)并立即可用于任何新 對象的屬性,此時使用MyObject.Property語法。 它們不會作為Property對象出現(xiàn)在對象的 Properties集合中,因此,雖然可以更改它們的 值,但無法更改它們的特性 動態(tài)屬性由基本的數(shù)據(jù)提供者定

28、義,并出現(xiàn)在 相應(yīng)的ADO對象的Properties集合中 基于VC的數(shù)據(jù)庫應(yīng)用開發(fā) 在Visual C+中使用ADO有3種不同的方法: 直接使用ADO Data控件; 使用智能指針操作; 使用Visual C+ Extensions for ADO(簡稱為ADO Extensions)。由于ADO基于COM技術(shù),因此可以 使用調(diào)用COM接口的方式使用ADO 使用ADO Data控件訪問數(shù)據(jù)庫 使用智能指針訪問數(shù)據(jù)庫 ADO庫包含三個智能指針: _ConnectionPtr通常被用來創(chuàng)建一個數(shù)據(jù)連接或執(zhí) 行一條不返回任何結(jié)果的SQL語句,如一個存儲過 程。 _CommandPtr返回一個記錄集

29、。它提供了一種簡單 的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。 在使用_CommandPtr接口時,可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里 直接使用連接串。 _RecordsetPtr是一個記錄集對象。與以上兩種對象 相比,它對記錄集提供了更多的控制功能,如記錄 鎖定、游標(biāo)控制等。同_CommandPtr指針一樣,它 不一定要使用一個已經(jīng)創(chuàng)建的數(shù)據(jù)連接,但如果要 使用多個記錄集,最好的方法是同Command對象一 樣使用已經(jīng)創(chuàng)建了數(shù)據(jù)連接的全局_ConnectionPtr 指針,然后使用_RecordsetPtr執(zhí)行存儲過程和SQL 語句。 使用ADO智能指針來操縱數(shù)據(jù)庫 的方法 引入ADO庫文件: #import C:Program Filescommon filessystemadomsado15.dll no_namespace rename(EOF, adoEOF) 初始化OLE/COM庫環(huán)境 BOOL CMyAdoApp:InitInstance() if (

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論