




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章ADO數(shù)據(jù)庫(kù)編程12.1ADO對(duì)象ActiveXDataObjects(ADO)是Microsoft數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)的新接口,是建立在OLEDB之上的高層數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。ADO封裝了OLEDB所提供的接口,用戶(hù)能夠編寫(xiě)應(yīng)用程序以通過(guò)OLEDB提供者訪問(wèn)和操作數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)。ADO的優(yōu)點(diǎn)是易于使用、速度快。ADO數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)有以下特點(diǎn)。多種方法訪問(wèn)數(shù)據(jù)庫(kù)。基于COM的特性使ADO技術(shù)能應(yīng)用于很多編程環(huán)境。方便Web應(yīng)用。12.1.1連接對(duì)象連接對(duì)象(Connection)用于連接數(shù)據(jù)源,以及處理一些命令和事務(wù)。在使用ADO訪問(wèn)數(shù)據(jù)庫(kù)之前,必須先創(chuàng)建一個(gè)Connection對(duì)象,然后通過(guò)它打開(kāi)與數(shù)據(jù)庫(kù)的連接。屬
性描述Attributes屬性為讀/寫(xiě),并且其值可以為AdXactCommitRetaining和AdXactAbortRetaining中的任意一個(gè)或多個(gè)CommandTimeout該屬性允許由于網(wǎng)絡(luò)擁塞或服務(wù)器負(fù)載過(guò)重產(chǎn)生的延遲而取消Execute方法調(diào)用。指示在終止嘗試和產(chǎn)生錯(cuò)誤之前執(zhí)行命令期間需等待的時(shí)間ConnectionString該屬性包含用來(lái)建立到數(shù)據(jù)源的連接的信息。通過(guò)傳遞包含一系列由分號(hào)分隔的argument=value語(yǔ)句的詳細(xì)連接字符串可指定數(shù)據(jù)源ConnectionTimeout如果由于網(wǎng)絡(luò)擁塞或服務(wù)器負(fù)載過(guò)重導(dǎo)致的延遲使得必須放棄連接嘗試時(shí),使用該屬性,指示在終止嘗試和產(chǎn)生錯(cuò)誤前建立連接期間所等待的時(shí)間CursorLocation該屬性允許在提供者可用的各種游標(biāo)庫(kù)中進(jìn)行選擇。通常,可以選擇使用客戶(hù)端游標(biāo)庫(kù)或位于服務(wù)器上的某個(gè)游標(biāo)庫(kù)。設(shè)置或返回游標(biāo)引擎的位置DefaultDatabase設(shè)置或返回指定Connection對(duì)象上默認(rèn)數(shù)據(jù)庫(kù)的名稱(chēng)IsolationLevel表示Connection對(duì)象的隔離級(jí)別。IsolationLevel
的屬性為讀/寫(xiě)。直到下次調(diào)用BeginTrans方法時(shí),該設(shè)置才可以生效Mode可設(shè)置或返回當(dāng)前連接上提供者正在使用的訪問(wèn)權(quán)限。Mode屬性只能在關(guān)閉Connection對(duì)象時(shí)方可設(shè)置Provider設(shè)置或返回連接提供者的名稱(chēng)State確定指定對(duì)象的當(dāng)前狀態(tài)。該屬性是只讀的Version表示ADO版本號(hào)表12.1
Connection對(duì)象屬性表方法描述BeginTrans開(kāi)始一個(gè)新事務(wù)CommitTrans保存所有更改并結(jié)束當(dāng)前事務(wù)。它也可以啟動(dòng)新事務(wù)RollbackTrans取消當(dāng)前事務(wù)中所做的任何更改并結(jié)束事務(wù)。它也可以啟動(dòng)新事務(wù)Cancel取消執(zhí)行掛起的異步Execute或Open方法的調(diào)用Close關(guān)閉打開(kāi)的對(duì)象及任何相關(guān)對(duì)象Execute執(zhí)行指定的查詢(xún)、SQL語(yǔ)句、存儲(chǔ)過(guò)程或特定提供者的文本等內(nèi)容Open打開(kāi)與數(shù)據(jù)源的連接OpenSchema從提供者獲取數(shù)據(jù)庫(kù)綱要信息表12.2 Connection對(duì)象方法表12.1.2命令對(duì)象命令對(duì)象(Command)用于執(zhí)行傳遞給數(shù)據(jù)源的命令。屬性描述ActiveConnection可確定在其上將執(zhí)行指定Command對(duì)象或打開(kāi)指定Recordset的Connection對(duì)象CommandText包含要發(fā)送給提供者的命令的文本CommandTimeout表示在終止嘗試和產(chǎn)生錯(cuò)誤之前執(zhí)行命令期間需等待的時(shí)間CommandType表示Command對(duì)象的類(lèi)型Prepared可使提供者在首次執(zhí)行Command對(duì)象前保存CommandText屬性中指定的已準(zhǔn)備好(已編譯)的查詢(xún)版本State可以隨時(shí)使用State屬性確定指定對(duì)象的當(dāng)前狀態(tài)。該屬性是只讀的表12.3 Command對(duì)象屬性表方法描述Cancel取消執(zhí)行掛起的異步Execute或Open方法的調(diào)用CreateParameter可用指定的名稱(chēng)、類(lèi)型、方向、大小和值創(chuàng)建新的Parameter對(duì)象Execute執(zhí)行在CommandText屬性中指定的查詢(xún)、SQL語(yǔ)句或存儲(chǔ)過(guò)程表12.4 Connection對(duì)象方法表12.1.3記錄集對(duì)象記錄集對(duì)象(Recordset)可操作來(lái)自數(shù)據(jù)源的數(shù)據(jù),通過(guò)Recordset對(duì)象可對(duì)幾乎所有的數(shù)據(jù)進(jìn)行操作。所有的Recordset對(duì)象均使用記錄(行)和字段(列)進(jìn)行構(gòu)造。屬性描述AbsolutePage識(shí)別當(dāng)前記錄所在的頁(yè)碼AbsolutePosition根據(jù)其在Recordset中的序號(hào)位置移動(dòng)到記錄,或確定當(dāng)前記錄的序號(hào)位置ActiveConnection確定在其上將執(zhí)行指定Command對(duì)象或打開(kāi)指定Recordset的Connection對(duì)象BOF表示當(dāng)前記錄位置位于Recordset對(duì)象的第1個(gè)記錄之前EOF表示當(dāng)前記錄位置位于Recordset對(duì)象的最后一個(gè)記錄之后Bookmark保存當(dāng)前記錄的位置并隨時(shí)返回到該記錄CacheSize控制提供者在緩存中所保存的記錄的數(shù)目,并可控制一次恢復(fù)到本地內(nèi)存的記錄數(shù)CursorLocation允許在可用于提供者的各種游標(biāo)庫(kù)中進(jìn)行選擇CursorType指定打開(kāi)Recordset對(duì)象時(shí)應(yīng)該使用的游標(biāo)類(lèi)型EditMode確定當(dāng)前記錄的編輯狀態(tài)Filter選擇性地屏蔽Recordset對(duì)象中的記錄,已篩選的Recordset將成為當(dāng)前游標(biāo)LockType指定打開(kāi)時(shí)提供者應(yīng)該使用的鎖定類(lèi)型MarshalOptions表示要被調(diào)度返回服務(wù)器的記錄MaxRecords對(duì)提供者從數(shù)據(jù)源返回的記錄數(shù)加以限制PageCount確定Recordset
對(duì)象中數(shù)據(jù)的頁(yè)數(shù)PageSize確定組成邏輯數(shù)據(jù)頁(yè)的記錄數(shù)RecordCount確定Recordset
對(duì)象中記錄的數(shù)目Sort指定一個(gè)或多個(gè)Recordset以其關(guān)鍵字(ASCENDING或DSCENDING)排序的字段名,并指定按升序還是降序?qū)ψ侄芜M(jìn)行排序SourceRecordset對(duì)象中數(shù)據(jù)的來(lái)源(Command對(duì)象、SQL語(yǔ)句、表的名稱(chēng)或存儲(chǔ)過(guò)程)State確定指定對(duì)象的當(dāng)前狀態(tài)。該屬性是只讀的Status表示有關(guān)批更新或其他大量操作的當(dāng)前記錄的狀態(tài)表12.5 Recordset對(duì)象屬性表方法描述AddNew可創(chuàng)建和初始化新記錄Cancel取消執(zhí)行掛起的異步Execute或Open方法的調(diào)用CancelBatch可取消批更新模式下記錄集中所有掛起的更新CancelUpdate可取消對(duì)當(dāng)前記錄所作的任何更改或放棄新添加的記錄Clone從現(xiàn)有的Recordset對(duì)象創(chuàng)建Recordset對(duì)象的副本??蛇x擇指定該副本為只讀Delete可標(biāo)記Recordset對(duì)象中的當(dāng)前記錄或一組記錄以便刪除Move移動(dòng)Recordset對(duì)象中當(dāng)前記錄的位置MoveFirst移動(dòng)到記錄集的第1條記錄MoveLast移動(dòng)到記錄集的最后一個(gè)記錄MoveNext將當(dāng)前記錄向前移動(dòng)一個(gè)記錄(向Recordset
的底部)MovePrevious將當(dāng)前記錄位置向后移動(dòng)一個(gè)記錄(向記錄集的頂部)NextRecordset清除當(dāng)前Recordset對(duì)象并通過(guò)提前命令序列返回下一個(gè)記錄集Open可打開(kāi)代表基本表、查詢(xún)結(jié)果或者以前保存的Recordset中記錄的游標(biāo)Requery通過(guò)重新執(zhí)行對(duì)象所基于的查詢(xún),來(lái)更新Recordset對(duì)象中的數(shù)據(jù)Resync從現(xiàn)行數(shù)據(jù)庫(kù)刷新當(dāng)前Recordset對(duì)象中的數(shù)據(jù)Save將Recordset保存(持久)在文件中Supports確定Recordset對(duì)象所支持的功能類(lèi)型Update保存對(duì)Recordset
對(duì)象的當(dāng)前記錄所做的所有更改UpdateBatch將所有掛起的批更新寫(xiě)入磁盤(pán)表12.6 Recordset對(duì)象方法表12.2ADO數(shù)據(jù)庫(kù)操作技術(shù)12.2.1導(dǎo)入ADO動(dòng)態(tài)鏈接庫(kù)在使用ADO技術(shù)時(shí),需要導(dǎo)入一個(gè)ADO動(dòng)態(tài)鏈接庫(kù)msado15.dll。如何將msado15.dll導(dǎo)入到系統(tǒng)中,具體步驟如下。(1)在工作區(qū)窗口中選擇FileView視圖,如圖12.1所示。圖12.1FileView視圖(2)展開(kāi)HeaderFiles節(jié)點(diǎn),找到StdAfx.h子節(jié)點(diǎn),雙擊該節(jié)點(diǎn)打開(kāi)“StdAfx.h”頭文件,如圖12.2所示。圖12.2StdAfx.h頭文件(3)在stdafx.h文件中添加如下代碼將msado15.dll動(dòng)態(tài)鏈接庫(kù)導(dǎo)入到程序中。#import"C:\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespace\rename("EOF","adoEOF")rename("BOF","adoBOF")12.2.2使用ADO智能指針在msado15.tlh中基于_com_ptr_t類(lèi)定義了幾種智能指針,包括連接對(duì)象指針(_ConnectionPtr)、命令對(duì)象指針(_RecordsetPtr)、記錄集對(duì)象指針(_CommandPtr)。首先,聲明一個(gè)智能指針,代碼如下:_ConnectionPtr
m_pConnection;然后,通過(guò)CreateInstance函數(shù)創(chuàng)建對(duì)象實(shí)例,代碼如下:m_pConnection.CreateInstance("ADODB.Connection");//第1種方法m_pConnection.CreateInstance(__uuidof(Connection));//第2種方法通過(guò)上面的兩種方法都可以創(chuàng)建對(duì)象實(shí)例,使用時(shí)選擇一種即可。12.2.3初始化COM環(huán)境在MFC的應(yīng)用程序里,通常使用CoInitialize函數(shù)初始化COM環(huán)境。語(yǔ)法:HRESULTCoInitialize(LPVOIDpvReserved);在程序類(lèi)的InitInstance函數(shù)中初始化COM環(huán)境,代碼如下:
::CoInitialize(NULL);//初始化COM環(huán)境在程序最后還要釋放COM環(huán)境,代碼如下:
::CoUninitialize();//釋放COM環(huán)境12.2.4連接數(shù)據(jù)庫(kù)使用ADO連接數(shù)據(jù)庫(kù)是通過(guò)Connection對(duì)象的Open方法實(shí)現(xiàn)的。語(yǔ)法:Connection.open
Connectionstring,userID,password,openoptions參數(shù)描述ConnectionString(可選)字符串,包含連接信息。參照ConnectionString屬性可獲得有效設(shè)置的詳細(xì)信息UserID(可選)字符串,包含建立連接時(shí)所使用的用戶(hù)名稱(chēng)Password(可選)字符串,包含建立連接時(shí)所用密碼openoptions(可選)ConnectoptionEnum值。如果設(shè)置為adConnectoAsync,則異步打開(kāi)連接。當(dāng)連接可用時(shí)將產(chǎn)生ConnectComplete事件表12.7 Recordset對(duì)象方法表12.2.5打開(kāi)記錄集
Recordset對(duì)象表示的是來(lái)自基本表或命令執(zhí)行結(jié)果的記錄全集。它需要通過(guò)某種方式連接數(shù)據(jù)庫(kù)才可能得到各個(gè)字段的值,可以使用Recordset對(duì)象的Open成員函數(shù)打開(kāi)記錄集。語(yǔ)法:HRESULTOpen(const_variant_t&Source,const_variant_t&ActiveConnection,
enum
CursorTypeEnum
CursorType,
enum
LockTypeEnum
LockType,longOptions)12.2.6遍歷記錄集1.移動(dòng)記錄集指針MoveFirst:移動(dòng)到記錄集的第一條記錄。MoveLast:移動(dòng)到記錄集的最后一條記錄。MoveNext:移動(dòng)到記錄集當(dāng)前記錄的下一條記錄。MovePevious:移動(dòng)到記錄集當(dāng)前記錄的上一條記錄。2.Move方法除了移動(dòng)記錄集指針的方法外,還可以使用Move方法遍歷記錄集。語(yǔ)法:HRESULTMove(long
NumRecords,const_variant_t&Start=vtMissing)12.2.7向記錄集中添加數(shù)據(jù)(1)調(diào)用Recordset對(duì)象的AddNew方法添加一個(gè)新的空記錄。語(yǔ)法:Recordset.AddNew
FieldList,Values(2)調(diào)用PutCollect方法向新記錄中的字段賦值。語(yǔ)法:voidPutCollect(co
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)二氧化碳校驗(yàn)器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 統(tǒng)編版二年級(jí)語(yǔ)文下冊(cè)第七單元達(dá)標(biāo)測(cè)試卷(含答案)
- 四升五語(yǔ)文知識(shí)銜接專(zhuān)項(xiàng)訓(xùn)練 專(zhuān)題二·漢字 同步練習(xí)(含答案)人教統(tǒng)編版
- 高叉理論考試試題及答案
- 環(huán)宇技校焊工考試題及答案
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)強(qiáng)化訓(xùn)練試卷A卷附答案
- 河南單招培訓(xùn)試題及答案
- 2023-2024學(xué)年廣東省廣州市華南師大附屬番禺學(xué)校七年級(jí)(下)月考數(shù)學(xué)試卷(含答案)
- 采購(gòu)與安裝分包合同(2篇)
- 農(nóng)業(yè)技術(shù)推廣數(shù)字化平臺(tái)建設(shè)方案
- 2025年食品供應(yīng)商合同范本
- 《網(wǎng)絡(luò)信息安全教學(xué)》課件
- 徐州2025年江蘇徐州市口腔醫(yī)院招聘非在編醫(yī)務(wù)人員53人筆試歷年參考題庫(kù)附帶答案詳解-1
- 2025年01月2025中國(guó)作家協(xié)會(huì)所屬單位公開(kāi)招聘11人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 用色彩情感引發(fā)共鳴社交媒體運(yùn)營(yíng)秘訣
- 2025年江西機(jī)電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年江蘇旅游職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024年江西司法警官職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2025年上海市租房合同標(biāo)準(zhǔn)樣本(2篇)
- 四年級(jí) 人教版 數(shù)學(xué) 第三單元《乘法運(yùn)算律(四)(例8) -解決問(wèn)題策略的多樣化》課件
- 2025年全國(guó)法制宣傳日普法知識(shí)競(jìng)賽題庫(kù)及答案(共200題)
評(píng)論
0/150
提交評(píng)論