ADO數(shù)據(jù)庫技術(shù)及應(yīng)用.ppt_第1頁
ADO數(shù)據(jù)庫技術(shù)及應(yīng)用.ppt_第2頁
ADO數(shù)據(jù)庫技術(shù)及應(yīng)用.ppt_第3頁
ADO數(shù)據(jù)庫技術(shù)及應(yīng)用.ppt_第4頁
ADO數(shù)據(jù)庫技術(shù)及應(yīng)用.ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、ADO數(shù)據(jù)庫技術(shù)概述,1、ADO概述 ActiveX Data Objects (ADO) 是微軟最新的數(shù)據(jù)訪問技術(shù)。它被設(shè)計(jì)用來同新的數(shù)據(jù)訪問層OLE DB Provider一起協(xié)同工作,以提供通用數(shù)據(jù)訪問(Universal Data Access)。OLE DB是一個(gè)低層的數(shù)據(jù)訪問接口,用它可以訪問各種數(shù)據(jù)源,包括傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,以及電子郵件系統(tǒng)及自定義的商業(yè)對(duì)象。,第六章 ADO數(shù)據(jù)庫技術(shù)及應(yīng)用,ADO向我們提供了一個(gè)熟悉的,高層的對(duì)OLE DB的Automation封裝接口。 對(duì)那些熟悉RDO的程序員來說,你可以把OLE DB比作是ODBC驅(qū)動(dòng)程序。如同RDO對(duì)象是ODBC驅(qū)

2、動(dòng)程序接口一樣,ADO對(duì)象是OLE DB的接口;如同不同的數(shù)據(jù)庫系統(tǒng)需要它們自己的ODBC驅(qū)動(dòng)程序一樣,不同的數(shù)據(jù)源要求它們自己的OLE DB提供者(OLE DB provider)。 目前,雖然OLE DB提供者比較少,但微軟正積極推廣該技術(shù),并打算用OLE DB取代ODBC。,2、基本的 ADO 編程模型,ADO 提供執(zhí)行以下操作的方式: 連接到數(shù)據(jù)源。同時(shí),可確定對(duì)數(shù)據(jù)源的所有更改是否已成功或沒有發(fā)生。 指定訪問數(shù)據(jù)源的命令,同時(shí)可帶變量參數(shù),或優(yōu)化執(zhí)行。 執(zhí)行命令。 如果這個(gè)命令使數(shù)據(jù)按表中的行的形式返回,則將這些行存儲(chǔ)在易于檢查、操作或更改的緩存中。 適當(dāng)情況下,可使用緩存行的更改內(nèi)

3、容來更新數(shù)據(jù)源。 提供常規(guī)方法檢測(cè)錯(cuò)誤(通常由建立連接或執(zhí)行命令造成)。,3、ADO 對(duì)象模型,每個(gè) Connection、Command、Recordset 和 Field 對(duì)象都有 Properties 集合。,4、ADO 編程模型詳細(xì)資料,以下元素是 ADO 編程模型中的關(guān)鍵部分: 連接:通過“連接”可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。通過如 Microsoft Internet Information Server 作為媒介,應(yīng)用程序可直接(有時(shí)稱為雙層系統(tǒng))或間接(有時(shí)稱為三層系統(tǒng))訪問數(shù)據(jù)源。對(duì)象模型使用 Connection 對(duì)象使連接概念得以具體化。 命令:通過

4、已建立的連接發(fā)出的“命令”可以某種方式來操作數(shù)據(jù)源。一般情況下,命令可以在數(shù)據(jù)源中添加、刪除或更新數(shù)據(jù),或者在表中以行的格式檢索數(shù)據(jù)。對(duì)象模型用 Command 對(duì)象來體現(xiàn)命令概念。Command 對(duì)象使 ADO 能夠優(yōu)化對(duì)命令的執(zhí)行。,參數(shù):通常,命令需要的變量部分即“參數(shù)”可以在命令發(fā)布之前進(jìn)行更改。例如,可重復(fù)發(fā)出相同的數(shù)據(jù)檢索命令,但每一次均可更改指定的檢索信息。參數(shù)對(duì)執(zhí)行其行為類似函數(shù)的命令非常有用,這樣就可知道命令是做什么的,但不必知道它如何工作。 對(duì)象模型用 Parameter 對(duì)象來體現(xiàn)參數(shù)概念。,記錄集: 如果命令是在表中按信息行返回?cái)?shù)據(jù)的查詢(行返回查詢),則這些行將會(huì)存儲(chǔ)

5、在本地。 對(duì)象模型將該存儲(chǔ)體現(xiàn)為 Recordset 對(duì)象。但是,不存在僅代表單獨(dú)一個(gè) Recordset 行的對(duì)象。 記錄集是在行中檢查和修改數(shù)據(jù)最主要的方法。Recordset 對(duì)象用于: 指定可以檢查的行。 移動(dòng)行。 指定移動(dòng)行的順序。 添加、更改或刪除行。 通過更改行更新數(shù)據(jù)源。 管理 Recordset 的總體狀態(tài)。,字段:一個(gè)記錄集行包含一個(gè)或多個(gè)“字段”。如果將記錄集看作二維網(wǎng)格,字段將排列構(gòu)成“列”。每一字段(列)都分別包含有名稱、數(shù)據(jù)類型和值的屬性,正是在該值中包含了來自數(shù)據(jù)源的真實(shí)數(shù)據(jù)。對(duì)象模型以 Field 對(duì)象體現(xiàn)字段。 錯(cuò)誤 屬性 集合 事件,5、使用對(duì)象的 ADO

6、編程模型,ADO 的目標(biāo)是訪問、編輯和更新數(shù)據(jù)源,而編程模型體現(xiàn)了為完成該目標(biāo)所必需的系列動(dòng)作的順序。ADO 提供類和對(duì)象以完成以下活動(dòng): 連接到數(shù)據(jù)源 (Connection),并可選擇開始一個(gè)事務(wù)。 可選擇創(chuàng)建對(duì)象來表示 SQL 命令 (Command)。 可選擇在 SQL 命令中指定列、表和值作為變量參數(shù) (Parameter)。 執(zhí)行命令 (Command、Connection 或 Recordset)。 如果命令按行返回,則將行存儲(chǔ)在緩存中 (Recordset)。 可選擇創(chuàng)建緩存視圖,以便能對(duì)數(shù)據(jù)進(jìn)行排序、篩選和定位 (Recordset)。 通過添加、刪除或更改行和列編輯數(shù)據(jù) (

7、Recordset)。 在適當(dāng)情況下,使用緩存中的更改內(nèi)容來更新數(shù)據(jù)源 (Recordset)。 如果使用了事務(wù),則可以接受或拒絕在完成事務(wù)期間所作的更改。結(jié)束事務(wù) (Connection)。,6、Connection 對(duì)象,Connection 對(duì)象代表打開的、與數(shù)據(jù)源的連接 使用 Connection 對(duì)象的集合、方法、和屬性可執(zhí)行下列操作: 在打開連接前使用 ConnectionString、ConnectionTimeout 和 Mode 屬性對(duì)連接進(jìn)行配置。 設(shè)置 CursorLocation 屬性以便調(diào)用支持批更新的“客戶端游標(biāo)提供者”。 使用 DefaultDatabase 屬性

8、設(shè)置連接的默認(rèn)數(shù)據(jù)庫。 使用 Provider 屬性指定 OLE DB 提供者。 使用 Open 方法建立到數(shù)據(jù)源的物理連接。使用 Close 方法將其斷開。 使用 Execute 方法執(zhí)行對(duì)連接的命令,并使用 CommandTimeout 屬性對(duì)執(zhí)行進(jìn)行配置。 使用 Errors 集合檢查數(shù)據(jù)源返回的錯(cuò)誤。 通過 Version 屬性讀取使用中的 ADO 執(zhí)行版本。 使用 OpenSchema 方法獲取數(shù)據(jù)庫模式信息。,ADO的Connection對(duì)象的幾種連接數(shù)據(jù)庫的方法和形式: 靜態(tài)ODBC數(shù)據(jù)源DSN連接式 動(dòng)態(tài)ODBC數(shù)據(jù)驅(qū)動(dòng)連接式 OLEDB數(shù)據(jù)提供者連接方式 舉例說明:,7、Re

9、cordset 對(duì)象,Recordset 對(duì)象表示的是來自基本表或命令執(zhí)行結(jié)果的記錄全集。任何時(shí)候,Recordset 對(duì)象所指的當(dāng)前記錄均為集合內(nèi)的單個(gè)記錄。 可使用 Recordset 對(duì)象操作來自提供者的數(shù)據(jù)。使用 ADO 時(shí),通過 Recordset 對(duì)象可對(duì)幾乎所有數(shù)據(jù)進(jìn)行操作。所有 Recordset 對(duì)象均使用記錄(行)和字段(列)進(jìn)行構(gòu)造。由于提供者所支持的功能不同,某些 Recordset 方法或?qū)傩杂锌赡軣o效。 Recordset主要操作功能如下(舉例說明),通過舉例說明以下功能:,打開 Recordset 時(shí),當(dāng)前記錄位于第一個(gè)記錄(如果有),并且 BOF 和 EOF 屬

10、性被設(shè)置為 False。如果沒有記錄,BOF 和 EOF 屬性設(shè)置是 True。 假設(shè)提供者支持相關(guān)的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 屬性來重新確定當(dāng)前記錄的位置。僅向前 Recordset 對(duì)象只支持 MoveNext 方法。當(dāng)使用 Move 方法訪問每個(gè)記錄(或枚舉 Recordset)時(shí),可使用 BOF 和 EOF 屬性查看是否移動(dòng)已經(jīng)超過了 Recordset 的開始或結(jié)尾。,Recordset 對(duì)象可支持兩類

11、更新:立即更新和批更新。使用立即更新,一旦調(diào)用 Update 方法,對(duì)數(shù)據(jù)的所有更改將被立即寫入基本數(shù)據(jù)源。也可以使用 AddNew 和 Update 方法將值的數(shù)組作為參數(shù)傳遞,同時(shí)更新記錄的若干字段。 如果提供者支持批更新,可以使提供者將多個(gè)記錄的更改存入緩存,然后使用 UpdateBatch 方法在單個(gè)調(diào)用中將它們傳送給數(shù)據(jù)庫。這種情況應(yīng)用于使用 AddNew、Update 和 Delete 方法所做的更改。調(diào)用 UpdateBatch 方法后,可以使用 Status 屬性檢查任何數(shù)據(jù)沖突并加以解決。,8、Command 對(duì)象 (ADO),Command對(duì)象的主要目的是執(zhí)行參數(shù)化的存儲(chǔ)過

12、程。其形式要么是臨時(shí)準(zhǔn)備(prepared),要么是持久的預(yù)編譯(precompiled)過的SQL語句。如果想(存儲(chǔ))一個(gè)或多個(gè)查詢以供在同一Connection上多次執(zhí)行,Command對(duì)象也是很有用的。 當(dāng)想創(chuàng)建Recordset時(shí),一種高效的方法是繞過Command對(duì)象而采用Recordset.Open方法。,二、ADO應(yīng)用技術(shù),1、ADO數(shù)據(jù)庫連接方式主要有以下三種: 靜態(tài)ODBC數(shù)據(jù)源DSN連接式 舉例: cnnData.Open DSN=Data_Nwind;UID=;PWD=; 動(dòng)態(tài)ODBC數(shù)據(jù)驅(qū)動(dòng)連接式 舉例: cnnData.Open Driver=Microsoft Ac

13、cess Driver _(*.mdb); DBQ= Persist Security Info=False,ADO創(chuàng)建數(shù)據(jù)庫連接思路,定義全局?jǐn)?shù)據(jù)庫連接變量,自動(dòng)生成連接參數(shù)ConnectionString,通過Conn.Open調(diào)用連接參數(shù),開啟建立數(shù)據(jù)庫連接通道成功,2、如何添加一條記錄,1)思路,建立數(shù)據(jù)庫連接,添加數(shù)據(jù)準(zhǔn)備工作,數(shù)據(jù)校驗(yàn),打開要添加記錄的數(shù)據(jù)表,添加更新數(shù)據(jù)-AddNew-Update,將變量值賦給字段,2)具體實(shí)現(xiàn)程序 cnLink.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Persist Security

14、 Info=False Set rstLink = New ADODB.Recordset rstLink.Open select * from 課程信息表, cnLink, 3, 3 rstLink.AddNew For i = 1 To 5 If Text1(i) Then rstLink(i).Value = Text1(i) Next rstLink.Update rstLink.Close,2、顯示記錄,1)思路 建立數(shù)據(jù)庫連接 通過查詢條件寫SQL查詢語句 通過rst對(duì)象打開相應(yīng)的表,并執(zhí)行查詢找出符合查詢條件的記錄 將記錄集結(jié)果返回到界面的變量中 查詢結(jié)束,返回查詢結(jié)果,2)具體

15、實(shí)現(xiàn) Set cnLink = New ADODB.Connection cnLink.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Persist Security Info=False Set rstLink = New ADODB.Recordset rstLink.Open “select * from 課程信息表 where 課程名稱=數(shù)值分析, cnLink, 3, 3 For i = 1 To 5 Text1(i).Text = If rstLink(i) Then Text1(i).Text = rstLink(i).Va

16、lue Next rstLink.close,3、如何移動(dòng)瀏覽記錄,1)思路 建立數(shù)據(jù)庫連接 通過查詢條件寫SQL查詢語句 通過rst對(duì)象打開相應(yīng)的表,并執(zhí)行查詢找出符合查詢條件的記錄 通過四個(gè)按鈕執(zhí)行rst的 MoveFirst、MoveLast、MoveNext 以及 MovePrevious 方法 通過界面變量返回查詢結(jié)果,2)實(shí)現(xiàn)方法 Public Sub MoveAny(intChoice As Integer, _ rstTemp As Recordset) 使用指定方法捕獲 BOF 和 EOF。 Select Case intChoice Case 1 rstTemp.MoveF

17、irst Case 2 rstTemp.MoveLast Case 3 rstTemp.MoveNext If rstTemp.EOF Then MsgBox Already at end of recordset! rstTemp.MoveLast End If Case 4 rstTemp.MovePrevious If rstTemp.BOF Then MsgBox Already at beginning of recordset! rstTemp.MoveFirst End If End Select End Sub,4、刪除記錄,1)思路1 建立數(shù)據(jù)庫連接 通過查詢條件寫SQL刪除

18、語句 提出刪除警告 通過rst對(duì)象打開相應(yīng)的表,并執(zhí)行刪除命令 思路2 建立數(shù)據(jù)庫連接 通過conn.Excute(SQL)直接執(zhí)行刪除命令,2)實(shí)現(xiàn)方法(2種) If vbOK = MsgBox(您真的要?jiǎng)h除這條記錄嗎?, vbOKCancel + vbQuestion, 警告) Then cnnData.Execute delete from 基本信息表 where ID=11 End If,If vbOK = MsgBox(您真的要?jiǎng)h除這條記錄嗎?, vbOKCancel + vbQuestion, 警告) Then rstData.Open delete from 基本信息表 where ID=11 ,cnnData,3,3 End If,5、修改記錄,建立數(shù)據(jù)庫連接 通過rst對(duì)象打開相應(yīng)的表,并執(zhí)行查詢找出符合查詢條件的記錄 在可編輯的界面上顯示數(shù)據(jù)記錄 修改界面變量 通過Update方法更新數(shù)據(jù) 通過界面顯示成功信息,2)實(shí)現(xiàn)方法 I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論