資料錄集 (ODBC)
本主題適用於 MFC ODBC 類別。
CRecordset 物件表示選取自資料來源的一組資料錄。 資料錄可以來自:
資料表。
查詢。
存取一或多個資料表的預存程序。
以資料表為基礎的資料錄集的範例是 "all customers",可存取客戶資料表。 查詢的範例是「Joe Smith 的所有發票」。以預存程式為基礎的記錄集範例(有時稱為預先定義的查詢)是「所有違章帳戶」,它會叫用後端資料庫中的預存程式。 資料錄集可以聯結來自相同資料來源的兩個或多個資料表,但無法聯結來自不同資料來源的資料表。
注意
有些 ODBC 驅動程式支援資料庫的檢視。 這種意義上的檢視是最初使用 SQL CREATE VIEW
陳述式建立的查詢。
記錄集功能
所有資料錄集物件都共用下列功能:
如果資料來源不是唯讀的,您可以指定您的資料錄集是可更新、可附加,或是唯讀的。 如果資料錄集是可更新的,您可以選擇封閉式或開放式的鎖定方法,但前提是,驅動程式會提供適當的鎖定支援。 如果資料來源是唯讀的,資料錄集就會是唯讀的。
您可以呼叫成員函式以捲動選取的資料錄。
您可以篩選資料錄,以限制可以從可用的資料錄選取哪些資料錄。
您可以根據一個或多個資料行,使用遞增或遞減順序排序資料錄。
您可以將資料錄集參數化,以限定在執行階段的資料錄集選取範圍。
快照集和動態集
資料錄集有兩種主要類型:快照集和動態集。 兩者都受到 CRecordset
類別支援。 每種類型都會共用所有資料錄集的通用特性,但每種類型也都會透過自己的特殊方法來擴充通用功能。 快照集提供資料的靜態檢視,而且可用於報表,以及您希望資料檢視存在於特定時間的其他情況。 當您希望在資料錄集中看到其他使用者所做的更新,而不必重新查詢或重新整理資料錄集時,動態集將會很有用。 快照集和動態集可以是可更新的或唯讀的。 若要反映其他使用者新增或刪除的資料錄,請呼叫 CRecordset::Requery。
CRecordset
也允許其他兩種類型的資料錄集:動態資料錄集和順向資料錄集。 動態資料錄集類似於動態集;不過,動態資料錄集會反映新增或刪除的任何資料錄,而不需呼叫 CRecordset::Requery
。 因此,動態資料錄集通常會在 DBMS 上耗費大量的處理時間,而且許多 ODBC 驅動程式並不提供支援。 相反地,順向資料錄集會針對不需要更新或向後捲動的資料錄集,提供最有效率的資料存取方法。 例如,您可以使用順向資料錄集,將資料從一個資料來源移轉到另一個資料來源,而且您只需要以順向移動資料即可。 若要使用順向資料錄集,您必須執行下列兩個動作:
傳遞選項
CRecordset::forwardOnly
作為 Open 成員函式的 nOpenType 參數。在
Open
的 dwOptions 參數中指定CRecordset::readOnly
。注意
如需有關動態集支援之 ODBC 驅動程式需求的資訊,請參閱 ODBC。 如需此版本 Visual C++ 隨附之 ODBC 驅動程式的清單,以及取得其他驅動程式的相關資訊,請參閱 ODBC 驅動程式清單。
您的記錄集
針對每個您想要存取的不同資料表、檢視或預存程序,您通常要定義一個衍生自 CRecordset
的類別 (例外狀況是資料庫聯結,其中一個記錄集代表來自兩個或多個資料表的資料行。當您衍生記錄集類別時,您可以啟用記錄欄位交換 (RFX) 機制或大量記錄欄位交換 (Bulk RFX) 機制,這類似于對話資料交換 (DDX) 機制。 RFX 和大量 RFX 會將從資料來源傳輸資料到資料錄集的程序簡化;此外,RFX 還會從資料錄集傳輸資料到資料來源。 如需詳細資訊,請參閱 記錄欄位交換 (RFX) 和 記錄集:大量擷取記錄 (ODBC) 。
資料錄集物件可讓您存取所有選取的資料錄。 您可以使用 CRecordset
成員函式 (例如 MoveNext
和 MovePrev
) 捲動多個選取的資料錄,。 同時,一個資料錄集物件只代表其中一個選取的資料錄,也就是目前的資料錄。 您可以宣告對應到資料表資料行,或資料庫查詢所產生之資料錄資料行的資料錄集類別成員變數,藉此檢查目前資料錄的欄位。 如需記錄集資料成員的相關資訊,請參閱 Recordset:Architecture (ODBC) 。
下列主題將說明使用資料錄集物件的詳細資料。 這些主題會以功能分類和自然瀏覽順序列出,以允許循序讀取。