青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

Blog @ Blog

當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達(dá)

常用鏈接

統(tǒng)計(jì)

積分與排名

BBS

Blog

Web

最新評(píng)論

ADO客戶數(shù)據(jù)庫編程

ADO客戶數(shù)據(jù)庫編程

ADO,即ActiveX Data Objects,是一種特殊OLE DB客戶程序,它允許訪問程序在Visual C++Visual BasicVBscriptJava等編程語言中訪問。雖然ADO的巨大優(yōu)勢(shì)在于Visual BasicVBscript的使用,但是在某些特殊的情況下,ADOVisual C++中的訪問是無法避免的。正是由于ADO本身是一種OLE DB客戶程序,所以在數(shù)據(jù)庫應(yīng)用程序里使用ADO變得更加容易。ADOOLE DB、數(shù)據(jù)庫應(yīng)用以及數(shù)據(jù)源之間的關(guān)系可以用圖9-1表示:

9-1  ADOOLE DB、數(shù)據(jù)庫應(yīng)用以及數(shù)據(jù)源之間的關(guān)系

本章詳細(xì)介紹ADO的基本原理和數(shù)據(jù)庫訪問技術(shù)。

9.1  ADO原理

9.1.1  ADOOLE DB

ADO是微軟最新的對(duì)象層次上的數(shù)據(jù)操作技術(shù),它為操作OLE DB數(shù)據(jù)源提供了一套高層次自動(dòng)化接口。盡管OLE DB 已經(jīng)是一個(gè)強(qiáng)大的數(shù)據(jù)操作接口,然而大多數(shù)數(shù)據(jù)庫應(yīng)用開發(fā)者并不需要OLE DB提供的操作數(shù)據(jù)的底層控制接口。大多數(shù)開發(fā)者對(duì)于管理內(nèi)存資源、手工聚合組件以及其它的底層操作接口并不是很感興趣。另外,開發(fā)者經(jīng)常使用高層的、不支持指針和C++函數(shù)調(diào)用規(guī)范的開發(fā)語言,OLE DB為這種需要提供了方便。

從功能上來說,ADO也是一種OLE DB客戶程序,不過它不依賴于特定的OLE DB服務(wù)器,相反,它支持所有的OLE DB服務(wù)提供者。通過這些OLE DB服務(wù)提供者,ADO支持客戶/服務(wù)器模式和基于Web的數(shù)據(jù)庫應(yīng)用。

ADO支持客戶/服務(wù)器模式基于Web的數(shù)據(jù)操作,ADO尤其支持通過客戶/服務(wù)器模式或者基于Web模式訪問微軟的SQL Server數(shù)據(jù)庫服務(wù)器。

9.1.2  ADO的優(yōu)越性

對(duì)于數(shù)據(jù)庫編程人員來說,ADO具有如下優(yōu)越性:

·       便于使用。

·       支持多種編程語言,包括Visual BasicJavaC++VBScriptJavaScript

·       支持任何的OLE DB服務(wù)器,ADO可以操作任何的OLE DB數(shù)據(jù)源。

·       不損失任何OLE DB的功能,ADO支持C++編程人員操作底層的OLE DB接口。

·       可擴(kuò)展性,ADO能夠通過提供者屬性集合動(dòng)態(tài)地表示指定的數(shù)據(jù)提供者,還能夠支持COM的擴(kuò)展數(shù)據(jù)類型。

9.1.3  ADO對(duì)象模型

ADO對(duì)象模型包括以下關(guān)鍵對(duì)象:

·       Connection對(duì)象

在數(shù)據(jù)庫應(yīng)用里操作數(shù)據(jù)源都必須通過該對(duì)象,這是數(shù)據(jù)交換的環(huán)境Connection對(duì)象代表了同數(shù)據(jù)源的一個(gè)會(huì)話,在客戶/服務(wù)器模型里,這個(gè)會(huì)話相當(dāng)于同服務(wù)器的一次網(wǎng)絡(luò)連接。不同的數(shù)據(jù)提供者提供的該對(duì)象的集合、方法和屬性不同。

借助于Connection對(duì)象的集合、方法和屬性,可以使用OpenClose方法建立釋放一個(gè)數(shù)據(jù)源連接。使用Execute方法可以執(zhí)行一個(gè)數(shù)據(jù)操作命令,使用BeginTransCommitTransRollbackTrans方法可以啟動(dòng)提交回滾一個(gè)處理事務(wù)。通過操作the Errors 集合可以獲取和處理錯(cuò)誤信息,操作CommandTimeout屬性可以設(shè)置連接的溢出時(shí)間,操作ConnectionString屬性可以設(shè)置連接的字符串,操作Mode屬性可以設(shè)置連接的模式,操作Provider屬性可以指定OLE DB提供者

·       Command對(duì)象

Command對(duì)象是一個(gè)對(duì)數(shù)據(jù)源執(zhí)行命令的定義,使用該對(duì)象可以查詢數(shù)據(jù)庫并返回一個(gè)Recordset對(duì)象,可以執(zhí)行一個(gè)批量的數(shù)據(jù)操作,可以操作數(shù)據(jù)庫的結(jié)構(gòu)。不同的數(shù)據(jù)提供者提供的該對(duì)象的集合、方法和屬性不同。

借助于Command對(duì)象的集合、方法和屬性,可以使用Parameters集合制定命令的參數(shù),可以使用Execute方法執(zhí)行一個(gè)查詢并將查詢結(jié)果返回到一個(gè)Recordset對(duì)象里,操作CommandText屬性可以為該對(duì)象指定一個(gè)命令的文本,操作CommandType屬性可以指定命令的類型,操作Prepared可以得知數(shù)據(jù)提供者是否準(zhǔn)備好命令的執(zhí)行,操作CommandTimeout屬性可以設(shè)置命令執(zhí)行的溢出時(shí)間

·       Parameter對(duì)象

Parameter對(duì)象在Command對(duì)象中用于指定參數(shù)化查詢或者存儲(chǔ)過程的參數(shù)。大多數(shù)數(shù)據(jù)提供者支持參數(shù)化命令,這些命令往往是已經(jīng)定義好了的,只是在執(zhí)行過程中調(diào)整參數(shù)的內(nèi)容。

借助于Parameter對(duì)象的集合、方法和屬性,可以通過設(shè)置Name屬性指定參數(shù)的名稱,通過設(shè)置Value屬性可以指定參數(shù)的值,通過設(shè)置AttributesDirectionPrecisionNumericScaleSizeType 屬性可以指定參數(shù)的信息,通過執(zhí)行AppendChunk方法可以將數(shù)據(jù)傳遞到參數(shù)里

·       Recordset對(duì)象

如果執(zhí)行的命令是一個(gè)查詢并返回存放在表中的結(jié)果集,這些結(jié)果集將被保存在本地的存儲(chǔ)區(qū)里,Recordset對(duì)象是執(zhí)行這種存儲(chǔ)的ADO對(duì)象。通過Recordset對(duì)象可以操縱來自數(shù)據(jù)提供者的數(shù)據(jù),包括修改和更新行、插入和刪除行。

ADO定義了如表9-1所示的光標(biāo)類型

9-1  ADO的光標(biāo)類型

光標(biāo)類型

描述

adOpenDynamic

允許添加、修改和刪除記錄,支持所有方式的光標(biāo)移動(dòng),其他用戶的修改可以在聯(lián)機(jī)以后仍然可見

adOpenKeyset

類似于adOpenDynamic光標(biāo),它支持所有類型的光標(biāo)移動(dòng),但是建立連接以后其他用戶對(duì)記錄的添加不可見,其他用戶對(duì)記錄的刪除和對(duì)數(shù)據(jù)的修改是可見的。支持書簽操作

adOpenStatic

支持各種方式的光標(biāo)移動(dòng),但是建立連接以后其他用戶的行添加、行刪除和數(shù)據(jù)修改都不可見,支持書簽操作

adOpenForwardOnly

只允許向前存取,而且在建立連接以后,其他用戶的行添加、行刪除和數(shù)據(jù)修改都不可見,支持書簽操作

ADO定義了如表9-2所示的鎖定類型

9-2  ADO的鎖定類型

鎖定類型

描述

adLockReadOnly

(缺省)數(shù)據(jù)只讀

adLockPessimistic

鎖定操作的所有行,也稱為消極鎖定

adLockOptimistic

只在調(diào)用Update方法時(shí)鎖定操作的行,也稱為積極鎖定

adLockBatchOptimistic

在批量更新時(shí)使用該鎖定,也稱為積極批量鎖定

ADO定義了如表9-3所示的光標(biāo)服務(wù)位置

9-3  ADO的鎖定類型

光標(biāo)服務(wù)位置

描述

adUseNone

不使用光標(biāo)服務(wù)位置

adUseClient

使用客戶端光標(biāo)

adUseServer

(缺省)使用數(shù)據(jù)服務(wù)端或者驅(qū)動(dòng)提供端光標(biāo)

借助于Recordset對(duì)象的集合、方法和屬性,可以通過設(shè)置CursorType屬性設(shè)置記錄集的光標(biāo)類型,通過設(shè)置CursorLocation屬性可以指定光標(biāo)位置,通過讀取BOF EOF屬性的值,獲知當(dāng)前光標(biāo)在記錄集里的位置是在最前或者最后,通過執(zhí)行MoveFirstMoveLastMoveNextMovePrevious 方法移動(dòng)記錄集里的光標(biāo),通過執(zhí)行Update方法可以更新數(shù)據(jù)修改,通過執(zhí)行AddNew方法可以執(zhí)行行插入操作,通過執(zhí)行Delete方法可以刪除行

·       Field對(duì)象

Recordset對(duì)象的一個(gè)行由一個(gè)或者多個(gè)Fields對(duì)象組成,如果把一個(gè)Recordset對(duì)象看成一個(gè)二維網(wǎng)格表,那么Fields對(duì)象就是這些列。這些列里保存了列的名稱數(shù)據(jù)類型,這些值是來自數(shù)據(jù)源的真正數(shù)據(jù)。為了修改數(shù)據(jù)源里的數(shù)據(jù),必須首先修改Recordset對(duì)象各個(gè)行里Field對(duì)象里的值,最后Recordset對(duì)象將這些修改提交到數(shù)據(jù)源。

借助于Field對(duì)象的集合、方法和屬性,可以通過讀取Name屬性,獲知列的名稱。通過操作Value屬性可以改變列的值,通過讀取TypePrecisionNumericScale 屬性,可獲知列的數(shù)據(jù)類型、精度和小數(shù)位的個(gè)數(shù),通過執(zhí)行AppendChunk GetChunk 方法可以操作列的值

·       Error對(duì)象

Error對(duì)象包含了ADO數(shù)據(jù)操作時(shí)發(fā)生錯(cuò)誤的詳細(xì)描述,ADO的任何對(duì)象都可以產(chǎn)生一個(gè)或者多個(gè)數(shù)據(jù)提供者錯(cuò)誤,當(dāng)錯(cuò)誤發(fā)生時(shí),這些錯(cuò)誤對(duì)象被添加到Connection 對(duì)象的Errors集合里。當(dāng)另外一個(gè)ADO對(duì)象產(chǎn)生一個(gè)錯(cuò)誤時(shí),Errors集合里的Error對(duì)象被清除,新的Error對(duì)象將被添加到Errors集合里。

借助于Errosr對(duì)象的集合、方法和屬性,可以通過讀取NumberDescription屬性,獲得ADO錯(cuò)誤號(hào)碼和對(duì)錯(cuò)誤的描述,通過讀取Source屬性得知錯(cuò)誤發(fā)生的源。

·       Property對(duì)象

Property對(duì)象代表了一個(gè)由提供者定義的ADO對(duì)象的動(dòng)態(tài)特征。ADO對(duì)象有兩種類型的Property對(duì)象:內(nèi)置的和動(dòng)態(tài)的。內(nèi)置的Property對(duì)象是指那些在ADO里實(shí)現(xiàn)的在對(duì)象創(chuàng)建時(shí)立即可見的屬性,可以通過域作用符直接操作這些屬性。動(dòng)態(tài)的Property對(duì)象是指由數(shù)據(jù)提供者定義的底層的屬性,這些屬性出現(xiàn)在ADO對(duì)象的Properties集合里,例如,如果一個(gè)Recordset 對(duì)象支持事務(wù)和更新,這些屬性將作為Property對(duì)象出現(xiàn)在Recordset對(duì)象的Properties集合里。動(dòng)態(tài)屬性必須通過集合進(jìn)行引用,比如使用下面的語法:

        MyObject.Properties(0)   

或者

        MyObject.Properties("Name")

不能刪除任何類型的屬性對(duì)象。借助于Property對(duì)象的集合、方法和屬性,可以通過讀取Name屬性獲得屬性的名稱,通過讀取Type屬性獲取屬性的數(shù)據(jù)類型,通過讀取Value屬性獲取屬性的值,

ADO對(duì)象模型如圖9-2所示。

9-2  ADO對(duì)象模型

每個(gè)ConnectionCommandRecordsetField對(duì)象都有一個(gè)Properties集合,如圖9-3所示。

9-3  ADOProperties集合和Property對(duì)象
9.1.4  ADO編程

通常情況下,一個(gè)基于ADO的數(shù)據(jù)庫應(yīng)用使用如下過程操作數(shù)據(jù)源里的數(shù)據(jù):

(1) 創(chuàng)建一個(gè)Connection 對(duì)象。定義用于連接的字符串信息,包括數(shù)據(jù)源名稱、用戶ID、口令、連接超時(shí)、缺省數(shù)據(jù)庫以及光標(biāo)的位置。一個(gè)Connection 對(duì)象代表了同數(shù)據(jù)源的一次會(huì)話。可以通過Connection 對(duì)象控制事務(wù),即執(zhí)行BeginTransCommitTransRollbackTrans方法。

(2) 打開數(shù)據(jù)源,建立同數(shù)據(jù)源的連接。

(3) 執(zhí)行一個(gè)SQL命令。一旦連接成功,就可以運(yùn)行查詢了。可以以異步方式運(yùn)行查詢,也可以異步地處理查詢結(jié)果,ADO會(huì)通知提供者后臺(tái)提供數(shù)據(jù)。這樣可以讓應(yīng)用程序繼續(xù)處理其它事情而不必等待。

(4) 使用結(jié)果集。完成了查詢以后,結(jié)果集就可以被應(yīng)用程序使用了。在不同的光標(biāo)類型下,可以在客戶端或者服務(wù)器端瀏覽和修改行數(shù)據(jù)。

(5) 終止連接。當(dāng)完成了所有數(shù)據(jù)操作后,可以銷毀這個(gè)同數(shù)據(jù)源的連接。

9.2  ADO的數(shù)據(jù)庫訪問規(guī)范

Visual C++6.0ADO操作提供了庫支持,一般情況下,每個(gè)Windows操作系統(tǒng)的Program Files\Common Files\System\ado\目錄下都有一個(gè)msado*.dll文件,根據(jù)Windows版本的不同,該文件可以是msado1.dllmsado15.dllmsado2.dll。目前ADO的最高版本是2.0。在利用Visual C++6.0進(jìn)行ADO編程時(shí),可以借助Visual C++6.0import宏,將該庫文件引用到工程里,從而使msado*.dll庫里的數(shù)據(jù)和函數(shù)聲明被應(yīng)用的代碼所使用。

通過引用,msado*.dll庫在工程里產(chǎn)生了所有ADO對(duì)象的描述和聲明,這些聲明同前面介紹的對(duì)象名稱基本相似,但有所不同,下面將最常用的操作對(duì)象介紹如下:

·       _ConnectionPtr:指向ADOConnect對(duì)象的指針。

·       _RecordsetPtr:指向ADORecordset對(duì)象的指針。

·       _CommandPtr:指向ADOCommand對(duì)象的指針。

·       _ParameterPtr:指向ADOParameter對(duì)象的指針。

·       FieldPtr:指向ADOField對(duì)象的指針。

·       ErrorPtr:指向ADOError對(duì)象的指針。

·       PropertyPtr:指向ADOProperty對(duì)象的指針。

利用上述指針,可以使用9.1.3節(jié)里介紹的所有屬性和方法進(jìn)行數(shù)據(jù)庫應(yīng)用開發(fā)。圖9-4是一個(gè)最典型的ADO對(duì)象使用流程描述。

9-4  ADO的對(duì)象使用流程描述

 

posted on 2008-11-27 17:25 isabc 閱讀(865) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫

廣告信息(免費(fèi)廣告聯(lián)系)

中文版MSDN:
歡迎體驗(yàn)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            1000部国产精品成人观看| 久久久久久9| 久久精品人人| 欧美一区免费| 久久久www免费人成黑人精品| 亚洲欧美日韩久久精品| 亚洲永久字幕| 国产精品久久久久久久久久三级| 国产欧美精品一区aⅴ影院| 欧美猛交免费看| 欧美日韩国产页| 国产精品久久久久高潮| 国产一区二区三区不卡在线观看| 国产麻豆精品在线观看| 国内精品视频一区| 亚洲欧洲日夜超级视频| 在线一区二区三区四区五区| 亚洲欧美日韩综合| 久久精品三级| 最新亚洲一区| 亚洲一区国产| 免费不卡在线观看av| 国产精品久久久久久久久久尿| 在线成人av网站| 中文亚洲欧美| 麻豆精品91| 亚洲一级二级在线| 久久夜色精品国产欧美乱| 欧美三级免费| 亚洲国产成人精品女人久久久| 亚洲视频在线一区| 免费看亚洲片| 亚洲一区www| 久久综合伊人77777| 欧美日韩在线另类| 影音先锋亚洲电影| 欧美亚洲网站| 亚洲毛片在线观看| 麻豆成人综合网| 国产日韩欧美另类| 亚洲一区二区三区成人在线视频精品 | 欧美搞黄网站| 亚洲无吗在线| 欧美精品日日鲁夜夜添| 精品动漫3d一区二区三区免费| 亚洲一区二区黄色| 亚洲国产天堂久久国产91| 欧美一级欧美一级在线播放| 国产精品a久久久久久| 日韩亚洲在线| 亚洲第一视频| 免费一区二区三区| 狠狠88综合久久久久综合网| 欧美一区二区成人| 在线一区观看| 国产精品伦子伦免费视频| 亚洲午夜免费视频| 亚洲精品国产精品久久清纯直播| 老司机午夜精品视频在线观看| 狠狠色狠狠色综合日日小说| 久久久久久电影| 久久久久国产精品一区二区| 99国产精品自拍| 欧美性猛交99久久久久99按摩| 亚洲激情视频在线| 欧美v日韩v国产v| 久久久久国产精品午夜一区| 精品成人一区二区| 欧美freesex8一10精品| 免播放器亚洲一区| 亚洲乱码精品一二三四区日韩在线| 玖玖国产精品视频| 久久久久青草大香线综合精品| 一区二区三区无毛| 欧美成人日韩| 欧美黄色免费| 亚洲一区二区动漫| 亚洲欧美制服中文字幕| 国产一区二区三区在线观看视频| 久久久噜噜噜久久久| 久久亚洲捆绑美女| 亚洲精品永久免费| 亚洲精选在线观看| 国产精品人成在线观看免费 | 国产手机视频一区二区| 看欧美日韩国产| 免费观看日韩av| 一区二区三区免费网站| 亚洲欧美国产日韩中文字幕| 伊人蜜桃色噜噜激情综合| 欧美激情在线| 国产精品www| 欧美sm视频| 国产精品久久网| 男人的天堂成人在线| 欧美日韩在线视频一区| 久久久欧美精品sm网站| 欧美粗暴jizz性欧美20| 性欧美videos另类喷潮| 美女露胸一区二区三区| 亚洲欧美在线播放| 免费亚洲电影在线| 欧美一区二区在线| 欧美国产91| 久久精品国产清高在天天线| 欧美高清视频一二三区| 欧美一区二区三区在线| 男女激情久久| 久久久精品动漫| 欧美午夜久久| 亚洲国产成人av在线| 国产视频在线观看一区二区三区| 亚洲精品欧美日韩专区| …久久精品99久久香蕉国产| 篠田优中文在线播放第一区| 亚洲午夜一区二区| 欧美激情麻豆| 欧美jizz19性欧美| 国内精品国语自产拍在线观看| 在线视频精品一区| 亚洲精品社区| 久久久久99| 久久久噜噜噜久久久| 亚洲日本一区二区三区| 久久精品免费播放| 亚洲成人自拍视频| 亚洲国产另类 国产精品国产免费| 欧美日韩蜜桃| 亚洲毛片在线观看| 欧美1区2区| 国产九色精品成人porny| 亚洲黄色毛片| 国产主播一区二区三区| 日韩视频永久免费| 99xxxx成人网| 欧美 日韩 国产精品免费观看| 久久亚洲春色中文字幕| 国产日韩欧美视频| 午夜视频在线观看一区二区三区| 亚洲欧美日韩在线不卡| 国产精品国产三级国产专区53| 亚洲人成人一区二区在线观看 | 久久精品72免费观看| 国产精品乱人伦一区二区 | 久久综合狠狠综合久久综青草| 久久久www成人免费无遮挡大片| 国产免费一区二区三区香蕉精| 亚洲一区二区三区涩| 亚洲欧洲av一区二区| 国产欧美日韩另类视频免费观看| 亚洲欧美激情视频| 久久福利精品| 国产亚洲精品综合一区91| 久久成人18免费观看| 久久人人九九| 最新成人av网站| 欧美日韩在线视频一区| 午夜精品久久久| 免费在线亚洲| 一区二区福利| 国产精品裸体一区二区三区| 午夜精品久久久久影视| 快播亚洲色图| 亚洲作爱视频| 国产欧美一区二区精品性| 久久色在线播放| 一本久久青青| 久久亚洲国产成人| 亚洲蜜桃精久久久久久久| 国产精品一区二区视频| 久久夜色精品国产| 亚洲剧情一区二区| 久久精品视频在线| 99在线精品免费视频九九视| 国产欧美精品在线观看| 欧美第一黄色网| 香蕉免费一区二区三区在线观看| 欧美韩日亚洲| 国内精品久久久| 欧美成人精品一区二区| 亚洲视频在线视频| 狠色狠色综合久久| 亚洲人成在线免费观看| 欧美偷拍一区二区| 久久久999国产| 日韩午夜黄色| 欧美成人高清视频| 欧美一级久久久| 亚洲精品一区二区网址| 国产一区二区| 国产精品老牛| 欧美日韩视频一区二区三区| 久久综合激情| 欧美一区二区日韩一区二区| 亚洲美女啪啪| 亚洲电影观看| 麻豆精品视频| 久久亚洲精品一区二区| 欧美一区二区精品在线| 亚洲永久免费观看|