Recordset: Arbeiten mit großen Datenelementen (ODBC)
Dieses Thema gilt sowohl für die MFC ODBC-Klassen als auch für die MFC DAO-Klassen.
Hinweis
Wenn Sie die MFC DAO-Klassen verwenden, verwalten Sie Ihre großen Datenelemente mit Der Klasse CByteArray und nicht mit der Klasse "CLongBinary". Wenn Sie die MFC ODBC-Klassen mit massenweisem Abrufen von Zeilen verwenden, verwenden CLongBinary
Sie statt CByteArray
. Weitere Informationen zum Abrufen von Massenzeilen finden Sie unter Recordset: Abrufen von Datensätzen in Massen (ODBC).For more information about bulk row fetching, see Recordset: Fetching Records in Bulk (ODBC).For more information about bulk row fetching, see Recordset: Fetching Records in Bulk (ODBC).For more information
Angenommen, Ihre Datenbank kann große Datenelemente speichern, z. B. Bitmaps (Mitarbeiterfotos, Karten, Bilder von Produkten, OLE-Objekten usw.). Diese Art von Daten wird häufig als Binary Large Object (oder BLOB) bezeichnet, da:
Jeder Feldwert ist groß.
Im Gegensatz zu Zahlen und anderen einfachen Datentypen hat sie keine vorhersehbare Größe.
Die Daten sind aus der Perspektive Ihres Programms formlos.
In diesem Thema wird erläutert, welche Unterstützung die Datenbankklassen für das Arbeiten mit solchen Objekten bieten.
Verwalten großer Objekte
Recordsets haben zwei Möglichkeiten, die besondere Schwierigkeit beim Verwalten von binären großen Objekten zu lösen. Sie können CByteArray-Klasse verwenden oder die Klasse CLongBinary verwenden. Im Allgemeinen ist die bevorzugte Methode zum CByteArray
Verwalten großer Binärdaten.
CByteArray
erfordert mehr Mehraufwand als CLongBinary
aber fähiger, wie in der CByteArray-Klasse beschrieben. CLongBinary
wird kurz in der CLongBinary-Klasse beschrieben.
Ausführliche Informationen zum CByteArray
Arbeiten mit großen Datenelementen finden Sie in technischem Hinweis 45.
CByteArray-Klasse
CByteArray
ist eine der MFC-Auflistungsklassen. Ein CByteArray
Objekt speichert ein dynamisches Bytearray – das Array kann bei Bedarf vergrößert werden. Die Klasse bietet schnellen Zugriff nach Index, wie bei integrierten C++-Arrays. CByteArray
Objekte können serialisiert und für Diagnosezwecke abgebildet werden. Die Klasse stellt Memberfunktionen zum Abrufen und Festlegen angegebener Bytes, zum Einfügen und Anfügen von Bytes und zum Entfernen eines Byte oder aller Bytes zur Seite. Diese Einrichtungen erleichtern die Analyse der Binärdaten. Wenn das binäre Objekt beispielsweise ein OLE-Objekt ist, müssen Sie möglicherweise einige Headerbytes durchlaufen, um das tatsächliche Objekt zu erreichen.
Verwenden von CByteArray in Recordsets
Indem Sie einem Felddatenmemb des Recordsets den Typ CByteArray
zukommen lassen, stellen Sie eine feste Basis bereit, aus der RFX die Übertragung eines solchen Objekts zwischen Dem Recordset und der Datenquelle verwalten kann und über die Sie die Daten innerhalb des Objekts bearbeiten können. RFX benötigt einen bestimmten Standort für abgerufene Daten, und Sie benötigen eine Möglichkeit, auf die zugrunde liegenden Daten zuzugreifen.
Ausführliche Informationen zum CByteArray
Arbeiten mit großen Datenelementen finden Sie in technischem Hinweis 45.
CLongBinary-Klasse
Ein CLongBinary-Objekt ist eine einfache Shell um einen HGLOBAL
Handle zu einem Speicherblock, der auf dem Heap zugeordnet ist. Wenn eine Tabellenspalte gebunden wird, die ein binäres großes Objekt enthält, weist RFX das HGLOBAL
Handle zu, wenn die Daten an das Recordset übertragen werden müssen, und speichert den Handle im CLongBinary
Feld des Recordsets.
Sie verwenden wiederum das HGLOBAL
Handle, m_hData
um mit den Daten selbst zu arbeiten, die wie bei allen Handle-Daten verwendet werden. Hier fügt CByteArray Funktionen hinzu.
Achtung
CLongBinary-Objekte können nicht als Parameter in Funktionsaufrufen verwendet werden. Darüber hinaus verlangsamt die Implementierung, die ::SQLGetData
aufruft, die Bildlaufleistung für eine bildlauffähige Momentaufnahme notwendigerweise verlangsamt. Dies kann auch der Fall sein, wenn Sie einen Aufruf selbst verwenden ::SQLGetData
, um dynamische Schemaspalten abzurufen.
Siehe auch
Recordset (ODBC)
Recordset: Abrufen von Summen und anderen Aggregatergebnissen (ODBC)
Datensatzfeldaustausch (RFX)