Partager via


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_hDatapour 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 un instantané pouvant faire défiler. 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)