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

本主題同時適用于 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 簡單殼層。 當它系結包含二進位大型物件的資料表資料行時,RFX 會在需要將資料傳送至記錄集時配置 HGLOBAL 控制碼,並將控制碼儲存在 CLongBinary 記錄集的欄位中。

接著,您會使用 HGLOBAL 控制碼 m_hData 、來處理資料本身,如同處理任何控制碼資料一樣運作。 這是 CByteArray 新增功能的位置

警告

CLongBinary 物件不能當做函式呼叫中的參數使用。 此外,其實作會呼叫 ::SQLGetData ,這必然會減緩可捲動快照集的捲動效能。 當您自行使用呼叫來擷 ::SQLGetData 取動態架構資料行時,也可能是如此。

另請參閱

資料錄集 (ODBC)
資料錄集:取得 SUM 和其他彙總結果 (ODBC)
資料錄欄位交換 (RFX)