資料錄集:架構 (ODBC)
本主題適用於 MFC ODBC 類別。
本主題描述構成資料錄集物件架構的資料成員:
注意
本主題適用於衍生自 CRecordset
的物件,其中尚未實作大量資料列擷取。 如果已實作大量資料列擷取,則架構會類似。 若要了解差異,請參閱 記錄集:大量擷取記錄 (ODBC)。
範例類別
注意
Visual Studio 2019 和更新版本中未提供 MFC ODBC 消費者精靈。 您仍然可以手動建立消費者。
當您從 [新增類別] 精靈使用 MFC ODBC 消費者精靈來宣告衍生自 CRecordset
的資料錄集類別時,產生的類別會具有以下範例類別中所示的一般架構:
class CCourse : public CRecordset
{
public:
CCourse(CDatabase* pDatabase = NULL);
...
CString m_strCourseID;
CString m_strCourseTitle;
CString m_strIDParam;
};
在此類別的開頭,精靈會撰寫一組欄位資料成員。 當您建立類別時,必須指定一或多個欄位資料成員。 如果此類別與範例類別 (含有資料成員 m_strIDParam
) 一樣已參數化,您就必須手動新增參數資料成員。 精靈並不支援將參數新增至類別。
欄位數據成員
您資料錄集類別的最重要成員就是欄位資料成員。 針對您從資料來源選取的每個資料行,此類別會包含該資料行之適當資料類型的資料成員。 例如,本主題開頭顯示的範例類別便有兩個欄位資料成員 (兩者的類型皆為 CString
),稱為 m_strCourseID
和 m_strCourseTitle
。
當資料錄集選取一組記錄時,架構會自動將目前記錄的資料行 (在 Open
呼叫之後,第一個記錄是目前的記錄) 繫結至物件的欄位資料成員。 也就是說,架構會使用適當欄位資料成員作為可供儲存記錄資料行內容的緩衝區。
當使用者捲動至新記錄時,架構會使用欄位資料成員來代表目前的記錄。 架構會重新整理欄位資料成員,取代先前記錄的值。 欄位資料成員也會用來更新目前的記錄,以及新增新的記錄。 作為更新記錄程序的一部分,您需將值直接指派給適當的欄位資料成員,來指定更新值。
參數數據成員
如果類別已參數化,它就會有一或多個參數資料成員。 參數化類別可讓您的資料錄集查詢以在執行階段取得或計算出的資訊為基礎。
一般而言,參數有助於縮小選取範圍,如以下範例所示。 根據本主題開頭的範例類別,資料錄集物件可以執行下列 SQL 陳述式:
SELECT CourseID, CourseTitle FROM Course WHERE CourseID = ?
"?" 是您在執行階段提供之參數值的預留位置。 當您建構資料錄集並將其 m_strIDParam
資料成員設定為 MATH101 時,資料錄集的有效 SQL 陳述式會變成:
SELECT CourseID, CourseTitle FROM Course WHERE CourseID = MATH101
藉由定義參數資料成員,您可以讓架構了解 SQL 字串中的參數。 架構會繫結參數,這可讓 ODBC 知道要去哪裡取得要替代預留位置的值。 在範例中,產生的資料錄集只會包含來自 Course 資料表且 CourseID 資料行值為 MATH101 的記錄。 系統會選取此記錄的所有指定資料行。 您可以依需求指定多個參數 (和預留位置)。
注意
MFC 本身不會對參數進行任何處理 — 特別是,不會執行文字替代。 取而代之的是,MFC 會告訴 ODBC 去哪裡取得參數;ODBC 會擷取資料並執行必要的參數化。
注意
參數的順序很重要。 如需這項資訊,以及參數的詳細資訊,請參閱 Recordset:參數化 Recordset (ODBC)。
使用m_nFields和m_nParams
當精靈為您的類別撰寫建構函式時,它也會將 m_nFields 資料成員初始化,以指定類別中欄位資料成員的數目。 如果您將任何參數新增至您的類別,則也必須為 m_nParams 資料成員新增初始化,以指定參數資料成員的數目。 架構會使用這些值來與資料成員搭配運作。
如需詳細資訊和範例,請參閱 記錄字段交換:使用 RFX。