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

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

Blog @ Blog

當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

常用鏈接

統計

積分與排名

BBS

Blog

Web

最新評論

ADO客戶數據庫編程

ADO客戶數據庫編程

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

9-1  ADOOLE DB、數據庫應用以及數據源之間的關系

本章詳細介紹ADO的基本原理和數據庫訪問技術。

9.1  ADO原理

9.1.1  ADOOLE DB

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

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

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

9.1.2  ADO的優越性

對于數據庫編程人員來說,ADO具有如下優越性:

·       便于使用。

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

·       支持任何的OLE DB服務器,ADO可以操作任何的OLE DB數據源。

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

·       可擴展性,ADO能夠通過提供者屬性集合動態地表示指定的數據提供者,還能夠支持COM的擴展數據類型。

9.1.3  ADO對象模型

ADO對象模型包括以下關鍵對象:

·       Connection對象

在數據庫應用里操作數據源都必須通過該對象,這是數據交換的環境Connection對象代表了同數據源的一個會話,在客戶/服務器模型里,這個會話相當于同服務器的一次網絡連接。不同的數據提供者提供的該對象的集合、方法和屬性不同。

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

·       Command對象

Command對象是一個對數據源執行命令的定義,使用該對象可以查詢數據庫并返回一個Recordset對象,可以執行一個批量的數據操作,可以操作數據庫的結構。不同的數據提供者提供的該對象的集合、方法和屬性不同。

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

·       Parameter對象

Parameter對象在Command對象中用于指定參數化查詢或者存儲過程的參數。大多數數據提供者支持參數化命令,這些命令往往是已經定義好了的,只是在執行過程中調整參數的內容。

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

·       Recordset對象

如果執行的命令是一個查詢并返回存放在表中的結果集,這些結果集將被保存在本地的存儲區里,Recordset對象是執行這種存儲的ADO對象。通過Recordset對象可以操縱來自數據提供者的數據,包括修改和更新行、插入和刪除行。

ADO定義了如表9-1所示的光標類型

9-1  ADO的光標類型

光標類型

描述

adOpenDynamic

允許添加、修改和刪除記錄,支持所有方式的光標移動,其他用戶的修改可以在聯機以后仍然可見

adOpenKeyset

類似于adOpenDynamic光標,它支持所有類型的光標移動,但是建立連接以后其他用戶對記錄的添加不可見,其他用戶對記錄的刪除和對數據的修改是可見的。支持書簽操作

adOpenStatic

支持各種方式的光標移動,但是建立連接以后其他用戶的行添加、行刪除和數據修改都不可見,支持書簽操作

adOpenForwardOnly

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

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

9-2  ADO的鎖定類型

鎖定類型

描述

adLockReadOnly

(缺省)數據只讀

adLockPessimistic

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

adLockOptimistic

只在調用Update方法時鎖定操作的行,也稱為積極鎖定

adLockBatchOptimistic

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

ADO定義了如表9-3所示的光標服務位置

9-3  ADO的鎖定類型

光標服務位置

描述

adUseNone

不使用光標服務位置

adUseClient

使用客戶端光標

adUseServer

(缺省)使用數據服務端或者驅動提供端光標

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

·       Field對象

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

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

·       Error對象

Error對象包含了ADO數據操作時發生錯誤的詳細描述,ADO的任何對象都可以產生一個或者多個數據提供者錯誤,當錯誤發生時,這些錯誤對象被添加到Connection 對象的Errors集合里。當另外一個ADO對象產生一個錯誤時,Errors集合里的Error對象被清除,新的Error對象將被添加到Errors集合里。

借助于Errosr對象的集合、方法和屬性,可以通過讀取NumberDescription屬性,獲得ADO錯誤號碼和對錯誤的描述,通過讀取Source屬性得知錯誤發生的源。

·       Property對象

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

        MyObject.Properties(0)   

或者

        MyObject.Properties("Name")

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

ADO對象模型如圖9-2所示。

9-2  ADO對象模型

每個ConnectionCommandRecordsetField對象都有一個Properties集合,如圖9-3所示。

9-3  ADOProperties集合和Property對象
9.1.4  ADO編程

通常情況下,一個基于ADO的數據庫應用使用如下過程操作數據源里的數據:

(1) 創建一個Connection 對象。定義用于連接的字符串信息,包括數據源名稱、用戶ID、口令、連接超時、缺省數據庫以及光標的位置。一個Connection 對象代表了同數據源的一次會話。可以通過Connection 對象控制事務,即執行BeginTransCommitTransRollbackTrans方法。

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

(3) 執行一個SQL命令。一旦連接成功,就可以運行查詢了。可以以異步方式運行查詢,也可以異步地處理查詢結果,ADO會通知提供者后臺提供數據。這樣可以讓應用程序繼續處理其它事情而不必等待。

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

(5) 終止連接。當完成了所有數據操作后,可以銷毀這個同數據源的連接。

9.2  ADO的數據庫訪問規范

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

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

·       _ConnectionPtr:指向ADOConnect對象的指針。

·       _RecordsetPtr:指向ADORecordset對象的指針。

·       _CommandPtr:指向ADOCommand對象的指針。

·       _ParameterPtr:指向ADOParameter對象的指針。

·       FieldPtr:指向ADOField對象的指針。

·       ErrorPtr:指向ADOError對象的指針。

·       PropertyPtr:指向ADOProperty對象的指針。

利用上述指針,可以使用9.1.3節里介紹的所有屬性和方法進行數據庫應用開發。圖9-4是一個最典型的ADO對象使用流程描述。

9-4  ADO的對象使用流程描述

 

posted on 2008-11-27 17:25 isabc 閱讀(864) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

廣告信息(免費廣告聯系)

中文版MSDN:
歡迎體驗

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合久久美利坚合众国| 亚洲日本欧美日韩高观看| 新67194成人永久网站| 一二三区精品福利视频| 日韩一区二区精品视频| 一本久久a久久免费精品不卡| 日韩网站免费观看| 日韩视频在线永久播放| 99在线视频精品| 亚洲一区二区三区欧美| 亚洲欧美中文日韩在线| 久久久亚洲影院你懂的| 欧美啪啪成人vr| 国产精品乱码妇女bbbb| 韩曰欧美视频免费观看| 亚洲伦理精品| 欧美在线视频二区| 欧美国产三级| 亚洲调教视频在线观看| 久久精品免费看| 欧美精品激情blacked18| 国产精品日韩在线观看| 亚洲国产导航| 性做久久久久久久免费看| 久久永久免费| aaa亚洲精品一二三区| 久久久精品国产免费观看同学| 欧美大尺度在线| 国产无一区二区| 一区二区三区毛片| 久久夜色撩人精品| 在线亚洲欧美| 欧美承认网站| 一区二区在线观看视频在线观看| 亚洲视频在线二区| 欧美岛国激情| 欧美一级片在线播放| 欧美日韩综合视频| 久久aⅴ国产欧美74aaa| 欧美风情在线观看| 国内揄拍国内精品久久| 亚洲视频在线播放| 亚洲人成77777在线观看网| 亚洲免费观看高清完整版在线观看| 欧美一区二区精品久久911| 欧美日韩中文| 亚洲理伦电影| 欧美岛国在线观看| 久久夜色精品国产亚洲aⅴ | 99成人在线| 欧美 日韩 国产精品免费观看| 国产日韩在线一区二区三区| 亚洲一区二区三区精品在线| 亚洲欧洲在线看| 鲁大师影院一区二区三区| 国产亚洲一区精品| 欧美在线首页| 欧美一二三区精品| 国产视频一区在线观看一区免费| 亚洲欧美日韩综合国产aⅴ | 久久久精品动漫| 国产日韩综合| 久久国产精品网站| 亚洲欧美综合网| 国产老肥熟一区二区三区| 亚洲欧美日韩高清| 一区二区三区三区在线| 欧美性jizz18性欧美| 亚洲欧美日韩在线不卡| 午夜激情一区| 激情综合激情| 欧美国产专区| 欧美日本精品| 亚洲在线视频免费观看| 亚洲综合视频在线| 韩国精品在线观看| 欧美成人免费小视频| 欧美jizzhd精品欧美喷水| 亚洲精品久久久久久一区二区 | 国产亚洲免费的视频看| 久久久久久久一区二区三区| 久久久久88色偷偷免费| 亚洲国产小视频| 日韩亚洲欧美中文三级| 国产毛片精品国产一区二区三区| 麻豆成人91精品二区三区| 欧美激情一区二区三区| 亚洲综合视频一区| 午夜精彩视频在线观看不卡| 黄色成人片子| 亚洲国产女人aaa毛片在线| 欧美日本韩国一区| 久久狠狠亚洲综合| 欧美激情一区二区三区成人| 亚洲欧美一区二区视频| 欧美激情一二三区| 欧美日韩成人综合天天影院| 欧美伊人久久大香线蕉综合69| 久久欧美肥婆一二区| 一区二区三区波多野结衣在线观看| 亚洲在线中文字幕| 亚洲破处大片| 午夜视频久久久久久| 亚洲美女一区| 欧美在线视频导航| 99精品国产在热久久下载| 销魂美女一区二区三区视频在线| 亚洲激情影院| 午夜精品一区二区三区在线播放| 亚洲人线精品午夜| 欧美一区二区三区另类| 一区二区冒白浆视频| 欧美一区二区在线| 亚洲自拍高清| 欧美日韩国产成人在线免费| 噜噜噜在线观看免费视频日韩| 欧美日韩精品欧美日韩精品一| 久久综合久久综合久久| 国产精品视频xxx| 亚洲精品国产精品国自产观看| 国内精品久久久久伊人av| 亚洲午夜精品一区二区| 一本一本a久久| 欧美成人dvd在线视频| 玖玖玖免费嫩草在线影院一区| 国产精品少妇自拍| 99re热精品| 一本色道久久综合亚洲91| 欧美成人综合网站| 亚洲国产欧美日韩另类综合| 在线日韩av片| 久久成人精品一区二区三区| 香港成人在线视频| 国产精品亚洲一区| 亚洲一区二区成人| 亚洲视频第一页| 国产精品v一区二区三区| 99re热这里只有精品免费视频| 99精品欧美一区二区蜜桃免费| 蜜桃久久av一区| 亚洲国产精品电影在线观看| 91久久精品视频| 欧美激情精品久久久久久黑人 | 久久福利精品| 久久久亚洲国产美女国产盗摄| 国产精品久久久久av| 日韩网站在线观看| 在线中文字幕不卡| 欧美日韩在线观看一区二区三区 | 久久精品国产精品亚洲| 欧美影院成人| 黄色在线一区| 久久国内精品视频| 欧美国产视频一区二区| 亚洲国产精品t66y| 奶水喷射视频一区| 一本久久青青| 一区二区三区视频在线| 欧美伊久线香蕉线新在线| 久久久久欧美精品| 亚洲成人在线网| 欧美精品在线视频| 一区二区电影免费在线观看| 新狼窝色av性久久久久久| 欧美久久电影| 午夜精品视频一区| 欧美高清你懂得| 亚洲午夜在线视频| 激情视频一区二区| 欧美日韩精品伦理作品在线免费观看 | 欧美成人日韩| 亚洲天堂免费观看| 国产午夜精品理论片a级大结局| 久久―日本道色综合久久| 亚洲国产日韩综合一区| 亚洲欧美中日韩| 在线电影欧美日韩一区二区私密| 欧美成人第一页| 午夜电影亚洲| 亚洲美女视频| 欧美 日韩 国产 一区| 亚洲欧美激情四射在线日| 国产在线视频欧美| 欧美日韩中文字幕综合视频| 久久性天堂网| 亚洲欧美日韩一区| 亚洲欧洲综合| 久热这里只精品99re8久| 一区二区av| 亚洲国产毛片完整版| 国产伦一区二区三区色一情| 欧美精品1区2区| 久久亚洲国产精品一区二区| 在线一区亚洲| 亚洲精品一二三| 亚洲高清在线| 另类天堂视频在线观看| 欧美与欧洲交xxxx免费观看| 中日韩美女免费视频网址在线观看 | 在线国产欧美|