資料錄集:使用大型的資料項目 (ODBC)

更新:2007 年 11 月

這個主題適用於 MFC ODBC 類別和 MFC DAO 類別。

注意事項:

如果您正在使用 MFC DAO 類別,請使用 CByteArray 類別來管理大型資料項目,而不要使用 CLongBinary 類別。如果您正在使用 MFC ODBC 類別與大量資料列擷取,請使用 CLongBinary 而不要使用 CByteArray。如需關於大量資料列擷取的詳細資訊,請參閱資料錄集:擷取大量資料錄 (ODBC)

假設您的資料庫可儲存大型的資料片段,諸如點陣圖 (員工照片、地圖、產品圖片、OLE 物件等等)。這類的資料經常以二進位大型物件 (或 BLOB) 引用,因為:

  • 每個欄位值是大型的。

  • 不同於數字或其他簡單的資料型別,它無法預期大小。

  • 從您的程式觀點,資料是不規則的。

這個主題說明資料庫類別提供給使用這類物件的支援。

管理大型物件

資料錄集具有兩種方法可解決管理二進位大型物件的特殊困難。您可使用 CByteArray 類別或 CLongBinary 類別。一般而言,CByteArray 是較好的大型二進位資料管理方法。

CByteArray 需要的負荷比 CLongBinary 多,但功能也更多,在 CByteArray 類別中有說明。在 CLongBinary 類別中則簡短說明CLongBinary

如需以 CByteArray 來使用大型資料項目的詳細資訊,請參閱技術提示 45

CByteArray 類別

CByteArray 是一種 MFC 集合類別。CByteArray 物件會儲存動態的位元組陣列 -- 此陣列可視需要擴充。類別與內建 C++ 陣列一起,藉由索引提供快速存取。為了診斷用途,可序列化和傾印 CByteArray 物件。類別可以提供成員函式,以取得和設定特定位元組、插入和附加位元組,及移除一個位元組或所有位元組。這些設施可以讓您更輕易地剖析二進位資料。例如,如果二進位物件是一個 OLE 物件,您可能必須透過某些標頭位元組來觸及實質的物件。

在資料錄集中使用 CByteArray

您可以給定您的資料錄集一個型別為 CByteArray 型別的欄位資料成員,提供一個固定的基底,讓 RFX 可管理在您的資料錄集和資料來源間傳輸的這類物件,且您可透過它來處理物件內的資料。RFX 需要一個擷取資料的特定位置,而您需要一個能存取其下資料的方法。

如需以 CByteArray 來使用大型資料項目的詳細資訊,請參閱 技術提示 45

CLongBinary 類別

CLongBinary 物件是從 HGLOBAL 控制代碼到配置在堆積上的儲存體區塊附近的簡單 Shell。當它繫結一個包含二進位大型物件的資料表資料行時,RFX 會在其需要傳輸資料至資料錄集時,配置 HGLOBAL 控制代碼,並在資料錄集的 CLongBinary 欄位內儲存控制代碼。

您可以依序使用 HGLOBAL 控制代碼、m_hData,來使用其資料,以其他控制代碼資料操作方式進行操作。CByteArray 在此處加入功能。

警告:

CLongBinary 物件無法用來當做函式呼叫內的參數。除此之外,它們在呼叫 ::SQLGetData 的實作 (Implementation) 部分,對一個可捲動的快照集來說必然會使得捲動效能減慢。當您自己使用 ::SQLGetData 呼叫來擷取動態結構描述資料行時,可能也會出現這種情形。

請參閱

概念

資料錄集 (ODBC)

資料錄集:取得 SUM 和其他彙總結果 (ODBC)

資料錄欄位交換 (RFX)