




版權(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、ADOODBC API和
2、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)ODBC組件 應(yīng)用程序不是直接調(diào)用OD
3、BC驅(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ù)庫引擎訪問下列對象中的數(shù)據(jù)和數(shù)據(jù)庫結(jié)構(gòu) Microsoft Jet (
4、.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)用來訪問遠程ODBC數(shù)據(jù)庫。 ODBC的工作依賴于數(shù)據(jù)庫制造商提供的驅(qū)動程序,而DAO直接
5、利用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的緊密關(guān)系,使得它訪問ODBC兼容的數(shù)據(jù)庫(如SQL Server)時具有比DAO更高的性能。 雖
6、然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)用程序訪問。OLE DB使用者和提供者 使用OLE DB的應(yīng)用程序可以分為兩種:OLE DB提供者(OLE D
7、B 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 for ODBC OLE DB Provider for Jet OLE DB Provider for DTS P
8、ackages 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ù)的訪問方法(ISAM)和基于SQL的數(shù)據(jù)庫 RDO是ODBC的COM包裝。ODBC是一個基于C的API,允許通用用途(異類)的數(shù)據(jù)訪問
9、。但是,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中,可以使用兩個組件來訪問和處理數(shù)據(jù):.NET Framework數(shù)據(jù)提供程序(.NET Data Provider)和DataSet。.NET Framework數(shù)據(jù)提供程序
10、 .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ù)源的橋梁。DataAdapter使用Command對象在數(shù)據(jù)源中執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中,并使得DataSet中的數(shù)據(jù)更改與數(shù)據(jù)源保持一致
11、。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 connectivity,Java數(shù)據(jù)庫連接 是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法 JDBC與ODBC: ODBC 不適合直接
12、在 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ū)動通過客戶端加載數(shù)據(jù)庫廠商提供的本地代碼庫(C/C+等)來訪問數(shù)據(jù)庫 JDBC網(wǎng)絡(luò)的純Java驅(qū)動程序:這種驅(qū)動程序?qū)DBC轉(zhuǎn)換為與DBMS無關(guān)的網(wǎng)絡(luò)協(xié)議,之后這種協(xié)議又被某個服務(wù)器轉(zhuǎn)換為一種DBMS協(xié)議 本
13、地協(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是最快速、最有效地連接Access數(shù)據(jù)庫的方法。 DAO也可以連接到非Access數(shù)據(jù)庫,但是需要Jet引擎解釋DAO和ODBC之間的調(diào)用,這導(dǎo)致了較慢的連接速度和額外的開銷 RDO為ODBC提供了一個COM的封裝 RDO的目的是
14、簡化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的使用帶來了障礙 ADO是OLE DB的COM包裝 ADO主要為連接的數(shù)據(jù)訪問而設(shè)計,這意味著不論是瀏覽或更新數(shù)據(jù)都必須是實時的,這種連接的訪問模式占用服務(wù)器端的重要資源數(shù)據(jù)庫訪問技術(shù)小結(jié)(3) ADO .NET: ADO .NET滿足了ADO無法
15、滿足的三個重要需求: 提供了離線的數(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提供到任何數(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); 通用化:即能夠以一
16、種統(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平臺非.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.3ADO編程對象模型 ADO提供類和對象以完成以下活動: 連接到數(shù)據(jù)源(Connect
17、ion),并可選擇開始一個事務(wù); 可選擇創(chuàng)建對象來表示SQL命令(Command); 可選擇在SQL命令中指定列、表和值作為變量參數(shù)(Parameter); 執(zhí)行命令(Command、Connection 或 Recordset); 如果命令按行返回,則將行存儲在緩存中(Recordset); 可選擇創(chuàng)建緩存視圖,以便能對數(shù)據(jù)進行排序、篩選和定位(Recordset); 通過添加、刪除或更改行和列編輯數(shù)據(jù)(Recordset); 在適當(dāng)情況下,使用緩存中的更改內(nèi)容來更新數(shù)據(jù)源(Recordset); 如果使用了事務(wù),則可以接受或拒絕在完成事務(wù)期間所作的更改并結(jié)束事務(wù)(Connection)AD
18、O對象模型中的對象及其說明對象對象說明說明Connection代表打開的、與數(shù)據(jù)源的連接CommandCommand對象定義了將對數(shù)據(jù)源執(zhí)行的指定命令Parameter代表與基于參數(shù)化查詢或存儲過程的Command對象相關(guān)聯(lián)的參數(shù)或自變量Recordset代表來自基本表或命令執(zhí)行結(jié)果的記錄的集合。任何時候,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)涉及提供者的單
19、個錯誤而創(chuàng)建的所有Error對象。Fields包含Recordset對象的所有Field對象。Parameters包含Command對象的所有Parameter對象。Properties包含指定對象實例的所有Property對象。ADO對象和數(shù)據(jù)集合之間的關(guān)系Connection 對象 Connection 對象代表打開的、與數(shù)據(jù)源的連接 用Connection對象的可執(zhí)行下列操作: 在打開連接前使用ConnectionString、ConnectionTimeout和Mode屬性對連接進行配置 設(shè)置CursorLocation屬性以便調(diào)用支持批更新的“客戶端游標(biāo)提供者” 使用DefaultD
20、atabase屬性設(shè)置連接的默認數(shù)據(jù)庫 使用IsolationLevel屬性為在連接上打開的事務(wù)設(shè)置隔離級別 使用Provider屬性指定OLE DB提供者 使用Open方法建立到數(shù)據(jù)源的物理連接,使用Close方法將其斷開 使用Execute方法執(zhí)行連接的命令,并使用CommandTimeout屬性對執(zhí)行進行配置 使用BeginTrans、CommitTrans和RollbackTrans方法以及Attributes屬性管理打開的連接上的事務(wù)(如果提供者支持則包括嵌套的事務(wù)) 使用Errors集合檢查數(shù)據(jù)源返回的錯誤 通過Version屬性讀取使用中的ADO執(zhí)行版本 使用OpenSchema
21、方法獲取數(shù)據(jù)庫模式信息Command 對象 Command對象定義了將對數(shù)據(jù)源執(zhí)行的指定命令 使用Command對象可進行下列操作: 使用CommandText屬性定義命令(如SQL語句)的可執(zhí)行文本 通過Parameter對象和Parameters集合定義參數(shù)化查詢或存儲過程參數(shù) 使用Execute方法執(zhí)行命令并在適當(dāng)?shù)臅r候返回Recordset對象 執(zhí)行前應(yīng)使用CommandType屬性指定命令類型以優(yōu)化性能 使用Prepared屬性決定提供者是否在執(zhí)行前保存準(zhǔn)備好(或編譯好)的命令版本 使用CommandTimeout屬性設(shè)置提供者等待命令執(zhí)行的秒數(shù) 通過設(shè)置ActiveConnecti
22、on屬性使打開的連接與Command對象關(guān)聯(lián) 設(shè)置Name屬性將Command標(biāo)識為與Connection對象關(guān)聯(lián)的方法 將Command對象傳送給Recordset的Source屬性以便獲取數(shù)據(jù)Parameter對象 Parameter對象代表與基于參數(shù)化查詢或存儲過程的Command對象相關(guān)聯(lián)的參數(shù)或自變量 使用Parameter對象可進行如下操作: 使用Name屬性可設(shè)置或返回參數(shù)名稱; 使用Value屬性可設(shè)置或返回參數(shù)值; 使用Attributes和Direction、Precision、NumericScale、Size以及Type屬性可設(shè)置或返回參數(shù)特性; 使用AppendChu
23、nk方法可將長整型二進制或字符數(shù)據(jù)傳遞給參數(shù)Recordset對象 Recordset對象表示來自基本表或命令執(zhí)行結(jié)果的記錄集合。任何時候,Recordset對象所指的當(dāng)前記錄均為集合內(nèi)的單個記錄。 使用ADO時,通過Recordset對象可對幾乎所有數(shù)據(jù)進行操作。所有Recordset對象均使用記錄(行)和字段(列)進行構(gòu)造。 可以創(chuàng)建所需數(shù)量的Recordset對象。 打開Recordset時,當(dāng)前記錄位于第一個記錄(如果有),并且BOF和EOF屬性被設(shè)置為False。如果沒有記錄,BOF和EOF屬性設(shè)置是True。Recordset對象 可以使用MoveFirst、MoveLast、Mo
24、veNext、MovePrevious和Move方法,以及AbsolutePosition、AbsolutePage和Filter屬性來重新確定當(dāng)前記錄的位置 Recordset對象可支持兩類更新: 使用立即更新,一旦調(diào)用Update方法,對數(shù)據(jù)的所有更改將被立即寫入基本數(shù)據(jù)源。也可以使用AddNew和Update方法將值的數(shù)組作為參數(shù)傳遞,同時更新記錄的若干字段。 如果提供者支持批更新,可以使提供者將多個記錄的更改存入緩存,然后使用UpdateBatch方法在單個調(diào)用中將它們傳送給數(shù)據(jù)庫。Field對象 Field對象代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列 使用Field對象可進行如下操作: 使用N
25、ame屬性可返回字段名; 使用Value屬性可查看或更改字段中的數(shù)據(jù); 使用Type、Precision和NumericScale屬性可返回字段的基本特性; 使用DefinedSize屬性可返回已聲明的字段大小; 使用ActualSize屬性可返回給定字段中數(shù)據(jù)的實際大?。?使用Attributes屬性和Properties集合可決定對于給定字段哪些類型的功能受到支持; 使用AppendChunk和GetChunk方法可處理包含長二進制或長字符數(shù)據(jù)的字段值; 如果提供者支持批更新,可使用OriginalValue和UnderlyingValue屬性在批更新期間解決字段值之間的差異。Error對
26、象 Error對象包含與單個操作有關(guān)的數(shù)據(jù)訪問錯誤的詳細信 通過Error對象可獲得每個錯誤的詳細信息,包括: Description屬性,包含錯誤的文本; Number屬性,包含錯誤常量的長整型整數(shù)值; Source屬性,標(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)并立即可用于任何新對象的屬性,此時使用
27、MyObject.Property語法。它們不會作為Property對象出現(xiàn)在對象的Properties集合中,因此,雖然可以更改它們的值,但無法更改它們的特性 動態(tài)屬性由基本的數(shù)據(jù)提供者定義,并出現(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ù)庫
28、 ADO庫包含三個智能指針: _ConnectionPtr通常被用來創(chuàng)建一個數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句,如一個存儲過程。 _CommandPtr返回一個記錄集。它提供了一種簡單的方法來執(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_namespacerename(EOF, adoEOF) 初始化OLE/COM庫環(huán)境BOOL CMyAdoApp:InitInstance() if ( !AfxOleIn
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司白天集體活動方案
- 公司登山活動方案
- 公司聚餐嗨活動方案
- 公司美食大賽活動方案
- 公司肉孜節(jié)慰問活動方案
- 公司晚上團建策劃方案
- 公司無煙宣傳活動方案
- 公司節(jié)氣活動方案
- 公司法制教育活動方案
- 公司自我推廣活動方案
- 2025年全國I卷作文講評
- 車位租賃備案合同
- 森林草原防火 無人機巡查技術(shù)規(guī)范 征求意見稿
- 2025年中考英語考前沖刺卷(廣東卷)(解析版)
- 信息安全設(shè)備性能評測-洞察闡釋
- 農(nóng)村抗震農(nóng)房裝配式施工安全監(jiān)理合同
- 鋁粉加工合同協(xié)議書
- 大學(xué)語文試題及答案安徽
- 近七年寧夏中考化學(xué)真題及答案2024
- Braden 壓力性損傷評分表詳解
- 徐圩港區(qū)疏港航道整治工程報告書
評論
0/150
提交評論