本文歡迎非商業用途的轉載,但需要注明出自“編程入門網”及相應的網址鏈接。
ADO簡介
參考資料:
ADO簡介:http://bianceng.cn/VBjc/sjcz/sj2.htm
ado對象模型:http://bianceng.cn/Programming/VB_NET/200705/1201.htm
ADO是另一種用於開發訪問OLE DB數據源應用程序的API。有多種程序設計語言都支持ADO,如VB,VC++,VJ++等。ADO提供了較為高級並容易被理解的訪問OLE DB數據源的機制,它結合了DAO和RDO的優點。並提供了OLE DB數據源的入口。OLE DB是一種數據庫體系結構,它為企業網絡提供了普遍的數據綜合能力(從大型機到桌面上的數據,而不管數據的具體類型是什麼),與ODBC相比,OLE DB在數據通道方面更具有普遍性和有效性,這是因為它允許同建立在COM基礎上的更多的數據類型聯系和由於ADO是為開發客戶機/服務器程序而專門設計的。下圖是典型的ADO應用程序的結構。
ADO的特征如下:
▲支持成批更新.即對更新的多個記錄進行緩沖,並同步傳輸到服務器。
▲支持所有類型的光標。包括只能前移型,關鍵值型以及動態和靜態型。
▲支持服務器端的存儲過程。這些過程可以大大提高應用程序的通用性。
▲支持返回多個記錄集的查詢。
▲支持查詢目的。包括限制返回的記錄的個數,激活返回記錄的過濾和預先語句。
ADO是由以下對象組成的:Command,Connect,Error,Field,Parameter和RecordSet。下圖給出了ADO對象的層次結構。除了Error和Field之外的所有ADO對象都是可以單獨創建的,而Command,Error和Parameter對象是可選的。
ADO對象介紹
1.Connection對象
詳見vb神童教程(續)--vb adodb Connection對象簡介
Connection對象封裝了到數據源的連接而且允許使用Execute()方法來執行SQL命令,Execute()命令返回一個RecordSet對象。可使用Connection對象配置一個數據庫的鏈接、定義脫機等級、執行SQL命令並對SQL語句的執行進行控制和管理。下圖顯示了Connection對象同其它對象的關系。
2.Command對象
Command對象定義了將對數據源執行的指定命令。使用Command對象查詢數據庫並將查詢所得到的記錄集返回給RecordSet對象,以便執行大量操作或處理數據庫結構。Command對象的主要功能主要有:
▲使用數據管理命令創建RecordSet對象,完成成批更新和使用數據定義命令修改數據源結構。
▲打開到數據源的連接,指明一個命令,執行存儲過程和創建語句。
▲與Parameter對象聯合創建參數化的命令。應用程序可以往各參數集中添加參數,而不需要數據提供者預先填充參數集。
3.Error對象
Error對象封裝了從數據源返回的錯誤。如果Error對象可用,可使用它來獲得錯誤描述、錯誤代碼、創建錯誤的對象、參考幫助文件和當前的SQL狀態。Errors集合中包含了為響應涉及提供者的單個錯誤而創建的所有Error對象。任何涉及ADO對象的操作都可能產生一個或多個提供者錯誤。產生錯誤時,可以將一個或多個Error對象置於Connection對象的Errors集合中。其他ADO操作產生錯誤時,將會自動清空Errors集合,並且將新的Error對象置於Errors集合中。
4.Field對象
Field對象封裝了RecordSet對象中的一列。可以這樣說,一個RecordSet對象是由一組Field對象組成的。可以使用Field對象來訪問列的名稱、列值、類型、精度、范圍和列的大小。Field對象只能從RecordSet對象中來訪問。
5.Parameter對象
Parameter對象封裝了一個命令參數,此參數可以是輸入型、輸出型或者輸入/輸出型。許多數據源提供者都支持參數化的命令。需要進行的操作在這些命令中只定義一次,但可以使用變量(或參數)來改變命令的某些細節。例如,SQL SELECT語句可以使用某個參數定義WHERE子句的匹配條件,而使用另一個參數來定義SORT BY子句的列的名稱。
6.RecordSet對象
RecordSet對象是ADO的核心,可以單獨地創建。RecordSet對象表示的是來自基本表或命令執行結果的記錄全集。任何時候,RecordSet對象所指的當前記錄均為集合內的單個記錄。在RecordSet對象中有一個默認的指針,用戶程序可以通過這個默認指針的移動來訪問記錄集中的單個記錄。RecordSet對象封裝了一組可以訪問列級數據的Field對象。
RecordSet對象的方法:
1.AddNew方法
AddNew方法為可更新的Recordset對象創建一個新記錄.AddNew方法將添加一條新的空記錄,並且定位在該記錄上,用戶可以在被綁定的數據感知控件中輸入修改數據.新增加的記錄的值為指定的默認值,如果沒有指定值,則為Null.例如: 輸入完新記錄後,要使用I.1pdate方法才能將數據保存到數據庫中,在使用Update方法前,數據庫中的數據不會發生改變,只有執行Update方法或通過Data控件移動當前記錄時,記錄才從緩沖區存儲到數據庫文件中.使用Update方法後,新記錄仍保持為當前記錄.
Data1.Recordset.AddNew
2.Delete方法
Delete方法可將當前記錄從記錄集中刪除.
3.Edit方法
要編輯修改數據庫的記錄,首先使要編輯的記錄成為當前記錄,然後使用Edit方法修改記錄內容,使用Edit方法後,移動記錄或者使用Update方法把數據存入到數據庫中.
4.Move方法
可以使用各種:Move方法移動記錄,使不同的記錄成為當前記錄.有5種方法:
MoveFirst.移動到記錄集的第一條記錄.
Move[,ash移動到記錄集的最好一條記錄.
MoveNext:移動到記錄集的下一條記錄.
MovePrevious:移動到記錄集的上一條記錄.
Move:可以使用Move方法向前或向後移動若干條記錄.語法為:
Recordset.MoveNumRecords.Start
其中NumRecords設置向前或向後移動記錄的行數,正數表示向後移動NumRecords行,負數表示向前移動NumRecords行.Start參數為可選,表示基准位置,缺省時為當前記錄的位置.可以把當前記錄集的Bookmark作為基准位置.
5.Find和Seek方法
要查找一個符合條件的記錄,在Table型的記錄集中可以使用Seek方法,在其他類型的記錄集中可以使用Find方法.
共有4種Find方法:FindFirst,Find[,ast,FindNext和:FindPrevious方法.使用Seek方法要用到索引,而且只能用於Table類型的記錄集.
6.I_Ipdate和CancelIJpdate方法
Update方法保存對Recordset對象的當前記錄所做的更改.使用IJpdate方法可以保存自從調用.AddNew方法,或自從現有記錄的任何字段值發生更改(使用Edit方法)之後,對Recordset對象的當前記錄所作的所有更改.調用LIpdate方法後當前記錄仍為當前狀態.
如果希望取消對當前記錄所做的所有更改或者放棄新添加的記錄,則必須調用CancelUpdate方法.調用CanceltJpdate時,更改緩存被重置為空,並使用原來的數據對被綁定的數據感知控件進行刷新.
它們的語法為:
7.Close方法
使用Close方法可以關閉:Recordset對象以便釋放所有關聯的系統資源.關閉對象並非是將它從內存中刪除,可以更改它的屬性設置並且在此之後再次打開.