資料錄集:使用大型的資料項目 (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
取動態架構資料行時,也可能是如此。