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