有關ADO方法的介紹與說明
ADO方法可以進行有效地獲取得數(shù)據(jù)。GetRows 方法傳回一個二維的數(shù)組變量,每一行對應Recordset中的一筆記錄,且每一列對應到記錄中的字段。此方法的語法如下: 歡迎大家進行學習思考。
Rows 是要讀取記錄的數(shù)量;如果想要取得Recordset所有記錄,可用-1或省略此參數(shù)。Start 是指出第一個被讀取記錄的書簽;也可ADO方法以是下列列舉常數(shù)中的一個:0-adBookmarkCurrent(目前記錄)、1-adBookmarkFirst(第一筆記錄)、或2-adBookmarkLast(最后記錄)。
Fields 是可選擇的字段名稱數(shù)組,其用來限制要讀取的數(shù)據(jù)量。(也可指定單一字段名稱、單一字段索引、或者一個字段索引數(shù)組ADO方法)。當設定 Rows 為少于Recordset記錄筆數(shù)時,第一筆未讀取的記錄變成現(xiàn)行記錄。
若省略 Rows 參數(shù)或設定為-1-adGetRowsRest或大于未讀取的筆數(shù)時,GetRows 方法會讀取所有記錄并讓Recordset在EOF狀態(tài),而不會產(chǎn)生任何錯誤當處理目的變量數(shù)組的數(shù)據(jù)時,應該ADO方法記得數(shù)據(jù)儲存方式是有點相反的感覺:數(shù)組中第一維定義Recordset的字段(數(shù)據(jù)行),第二維定義Recordset的數(shù)據(jù)列。
GetRows 方法通常比一次讀一筆記錄的循環(huán)要來得快ADO方法些,但使用這方法時,必須確定Recordset未包含太多記錄;否則,會很容易以一個非常大的變量數(shù)組來填滿所有內(nèi)存?;谙嗤脑?,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)字段;若如此做的化,應用程序一定會爆掉,特別是對于較大的Recordset而言。最后,記住此方法傳回的變量數(shù)組是以0為基底的;傳回記錄的筆數(shù)是UBound(values,2)+1,傳回字段數(shù)是UBound(value, 1)+1。
但是每次使用這些特性時都會造成效率降低。我們推薦主要ADO方法在設計時和ad-hoc應用程序中使用這些特性。在可能的情況下,明確地指定大綱和元數(shù)據(jù),包括在數(shù)據(jù)集中定義表和列,定義數(shù)據(jù)適配器的Command屬性,定義Command的Parameter信息。#t#
如果你希望返回單個值,例如Count(*)、 Sum(ADO方法Price)、或者Avg(Quantity),你可以使用Command.ExecuteScalar。ExecuteScalar返回第一行第一列的值,返回結果集是數(shù)量值。ExecuteScalar通過一步完成不僅簡化了代碼而且提高了性能,而這些工作在使用DataReader時將需要兩個處理步驟。
當使用不返回行的SQL語句時,類似修改ADO方法數(shù)據(jù)(例如插入、更新或者刪除)或者只返回輸出參數(shù)或值,使用ExecuteNonQuery。它通過建立一個空DataReader刪除了任何必要的處理。