程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> ado對象模型

ado對象模型

編輯:VB.NET

ADO對象模型定義了一組可以編程對象,可以實現OLE DB的幾乎所有的功能。ADO對象模型中包含了7個對象:
●Connection對象
●Command對象
●Parameter對象
●Recordset對象
●Field對象
●Property對象
●Error對象
ADO對象模型中還包含了3個集合:
●Fields集合
●Properties集合
●Errors集合
它們之間的關系如下圖:

1.Connection對象
Connection對象用來與數據源建立連接、執行查詢以及建立事務處理。在建立連接之前,必須指定使用哪一個OLE DB供應者。如果Provider屬性設為空串,那麼連接采用缺省的OLE DB供應者。也可以設置Connection對象的ConenectionString屬性來間接設置Provider屬性。例如按下面語句設置ConenectionString屬性後,OLE DB供應者會是Microsoft OLE DB Provider For SQL Server。

而如果按照下面的語句的設置,OLE DB供應者將會是缺省的ODBC Provider:

當設置好了connectionstring屬性後,用Conenection對象的Open方法來與數據庫建立連接。例如下面的代碼用ODBC供應者與SQL Server數據庫建立一個連接:
Dim cnn1 as ADODB.Connection=New ADODB.Connection
strCnn="driver={SQL Server};server=srv;"&uid=sa;pwd=;database=pubs"
Cnn1.Open strCnn
當建立連接以後可以用Conenection對象的Execute方法進行查詢,包含SQL語句、存儲過程或者OLE DB供應者,它從一個文本文件中返回數據,當把一個目錄作為其數據源時,Execute方法的返回結果將是文本文件Custom.txt中的數據。

可以用Conenection進行事務處理。在事務處理方面,conenection對象提供了三個方法:
BeginTrans、CommitTrans和RollbackTrans。在數據修改之前,用BeginTrans方法開始事務處理,當數據修改以後,可以用CommitTrans方法提交事務,或者用RollbackTrans方法加滾事務。例如:

2.Command對象
Command對象執行數據庫操作命令,這些命令並不只限於查詢串,而是依賴於數據庫的OLE DB供應者。以下的討論假定使用ODBC供應者。
使用Command對象可以建立一個新的連接,也可以使用當前已經建立的連接,這取決於對象"ActiveConection"屬性的設置。如果"Activeconection"屬性被設置為一個Connection對象的引用,那麼Command對象就建立一個新的連接,並使用這個新連接。每個Connection對象可以包含多個Command對象。
用Command對象執行一個查詢子串,可以返回一個記錄集,也可以返回多個記錄集,甚至可以不返回記錄集。對象的"CommandText"屬性中包含了要執行的查詢字串。一個查詢可以是一個標准的SQL數據操作語言,如SELECT、DELETE、UPDATE,等;也可以是任何數據定義語言,如CREATE、DROP等;還可以是一個存儲過程或一個表。究竟CommandText中是哪一種查詢字串,由對象的"CommandType"屬性決定。"CommandType"屬性有四種不同的值:adCmdText,adCmdTable,adCmdStoreProc和adCmdUnknow。如果查詢字串是一個SQL語句,那麼"CommandType"屬性應設為"adCmdText";如果查詢字串是一個存儲過程的名字,那麼"CommandType"屬性應該為"adCmdStoreProc",Command對象用{call procedure=name}的形式來執行一個存儲過程;如果查詢字串是一個表名,那麼"CommandType"屬性應該設為"adCmdTable",Command對象用"Select * from Tablename"的形式來執行一個查詢;如果"CommandType"屬性被設置為"adCmdUnknown",Command對象必須執行一些額外的步驟來決定查詢字串的類型,這樣會降低系統的性能。
如果要執行一個帶參數的查詢,或者要執行一個查詢若干次,那麼可以用Command對象的"Prepared"屬性預先建立一個查詢字串。
假如有這樣一個SQL Server的存儲過程:

3.Parameters集合和Parameter對象
Parameters集合和Parameter對象為Command對象提供參數信息和數據。當且僅當Command對象執行的查詢是一個帶參數的查詢時,Parameters集合和Parameter對象才有用,Parameter對象包含在Parameters集合中。Parameter對象中可以包含4種類型的參數:輸入、輸出、輸入輸出和返回值類型。
用Command對象的CreateParameter方法來創建一個Parameter對象,Createparameter方法的語法如下,5個參數分別是:參數名、參數的數據類型、參數類型(輸入輸出等)、參數的長度和參數的值。

4.Recordset對象
Recordset對象用來操作查詢返回的結果集,它可以在結果集中添加、刪除、修改和移動記錄。當創建了一個Recordset對象時,一個游標也被自動創建了。可以用Recordset對象的CursorType屬性來設置游標的類型。游標的類型有4種:僅能向前移動的游標、靜態的游標、鍵集游標和動態游標。這已經在DAO中的Recordset對象和RDO的rdoResultset對象中介紹過了。
下面這個例子建立一個Recordset,並循環打印出結果集中的記錄的第一個字段的值。

5.Fields集合和Fields對象
Fields集合和Fields對象用來訪問當前記錄中的每一列的數據,可以用Fields對象創建一個新記錄、修改已存在的數據等。用Recordset對象的AddNew、Update和UpdateBatch方法來添加新記錄和更新記錄。也可以用Fields對象來訪問表中每一個字段的一些屬性,如下面的例子循環打印出表中當前記錄的字段名稱、類型和值。

6.Properties集合和Property對象
ADO對象有兩種類型的屬性:一種是內置的,另一種是動態的。內置的屬性不出現在對象的Properties集合中,而動態的屬性是由OLE DB供應者定義的,它們出現在相應的ADO對象的Properties集合中。Connection、Command、Recordset和Field對象包含有Properties集合,Properties集合中包含了Property對象,它們負責提供四個對象的特征信息。Property對象只有一個"Attributes"屬性,這個屬性描述了某個特定屬性是否被OLE DB供應者支持,或者是否必須賦值,或者是否能讀寫。Property對象的另外三個屬性為"Name"、"Type"和"Value",分別表示Property對象所描述的ADO對象的屬性名稱、數據類型和屬性值。
下面這個例子取得Connection對象的"ConnectTimeout"屬性值和Command對象的"CommandTimeout"屬性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved