Recordset : utilisation d'éléments de données volumineux (ODBC)
Cette rubrique s’applique aux classes ODBC MFC et aux classes DAO MFC.
Remarque
Si vous utilisez les classes DAO MFC, gérez vos éléments de données volumineux avec la classe CByteArray plutôt que la classe CLongBinary. Si vous utilisez les classes ODBC MFC avec extraction de lignes en bloc, utilisez CLongBinary
plutôt que CByteArray
. Pour plus d’informations sur l’extraction de lignes en bloc, consultez Recordset : Extraction d’enregistrements en bloc (ODBC).
Supposons que votre base de données puisse stocker de grandes parties de données, telles que des bitmaps (photographies d’employés, cartes, images de produits, objets OLE, etc.). Ce type de données est souvent appelé objet blob (ou objet blob) binaire, car :
Chaque valeur de champ est importante.
Contrairement aux nombres et autres types de données simples, il n’a pas de taille prévisible.
Les données sont sans forme du point de vue de votre programme.
Cette rubrique explique la prise en charge des classes de base de données pour l’utilisation de ces objets.
Gestion des objets volumineux
Les jeux d’enregistrements ont deux façons de résoudre la difficulté particulière de gérer les objets volumineux binaires. Vous pouvez utiliser la classe CByteArray ou utiliser la classe CLongBinary. En général, CByteArray
il s’agit de la meilleure façon de gérer les données binaires volumineuses.
CByteArray
nécessite plus de surcharge que CLongBinary
mais est plus capable, comme décrit dans la classe CByteArray. CLongBinary
est décrit brièvement dans la classe CLongBinary.
Pour plus d’informations sur l’utilisation CByteArray
d’éléments de données volumineux, consultez la note technique 45.
CByteArray, classe
CByteArray
est l’une des classes de collection MFC. Un CByteArray
objet stocke un tableau dynamique d’octets : le tableau peut croître si nécessaire. La classe fournit un accès rapide par index, comme avec les tableaux C++ intégrés. CByteArray
les objets peuvent être sérialisés et vidés à des fins de diagnostic. La classe fournit des fonctions membres pour obtenir et définir les octets spécifiés, l’insertion et l’ajout d’octets, et la suppression d’un octet ou de tous les octets. Ces installations facilitent l’analyse des données binaires. Par exemple, si l’objet binaire est un objet OLE, vous devrez peut-être parcourir certains octets d’en-tête pour atteindre l’objet réel.
Utilisation de CByteArray dans recordsets
En donnant à un membre de données de champ de votre jeu d’enregistrements le type CByteArray
, vous fournissez une base fixe à partir de laquelle RFX peut gérer le transfert d’un tel objet entre votre jeu d’enregistrements et la source de données et par le biais duquel vous pouvez manipuler les données à l’intérieur de l’objet. RFX a besoin d’un site spécifique pour les données récupérées et vous avez besoin d’un moyen d’accéder aux données sous-jacentes.
Pour plus d’informations sur l’utilisation CByteArray
d’éléments de données volumineux, consultez la note technique 45.
CLongBinary, classe
Un objet CLongBinary est un interpréteur de commandes simple autour d’un HGLOBAL
handle vers un bloc de stockage alloué sur le tas. Lorsqu’il lie une colonne de table contenant un objet volumineux binaire, RFX alloue le HGLOBAL
handle lorsqu’il doit transférer les données vers le jeu d’enregistrements et stocke le handle dans le CLongBinary
champ du jeu d’enregistrements.
À son tour, vous utilisez le HGLOBAL
handle, m_hData
pour travailler avec les données elles-mêmes, en l’exploitant comme vous le feriez sur n’importe quel handle de données. C’est là que CByteArray ajoute des fonctionnalités.
Attention
Les objets CLongBinary ne peuvent pas être utilisés comme paramètres dans les appels de fonction. En outre, leur implémentation, qui appelle ::SQLGetData
, ralentit nécessairement les performances de défilement pour une instantané de défilement. Cela peut également être vrai lorsque vous utilisez un ::SQLGetData
appel vous-même pour récupérer des colonnes de schéma dynamiques.
Voir aussi
Recordset (ODBC)
Recordset : calculs de totaux et autres résultats de regroupement (ODBC)
Record Field Exchange (RFX)