Conjunto de registros: Trabajar con grandes elementos de datos (ODBC)
Este tema se aplica tanto a las clases ODBC como a las clases DAO de MFC.
Nota
Si utiliza las clases DAO de MFC, administre los grandes elementos de datos mediante la clase CByteArray en lugar de la clase CLongBinary.Si utiliza las clases ODBC de MFC con la obtención de filas masiva, utilice CLongBinary en lugar de CByteArray.Para obtener más información sobre la obtención masiva de filas, vea Conjunto de registros: Obtener registros de forma masiva (ODBC).
Supongamos que su base de datos puede almacenar grandes fragmentos de datos, como mapas de bits (fotografías de empleados, mapas, imágenes de productos, objetos OLE, entre otros). Este tipo de datos suele denominarse Objeto binario grande u objeto BLOB (Binary Large Object) debido a que:
Todos los valores de campo son grandes.
A diferencia de los números y otros tipos de datos sencillos, no tiene un tamaño predecible.
Los datos no tienen forma desde la perspectiva del programa.
Este tema explica la compatibilidad que proporcionan las clases de base de datos para el trabajo con estos objetos.
Administrar objetos grandes
Los conjuntos de registros tienen dos formas de resolver la especial dificultad de administrar objetos binarios grandes. Se puede usar la clase CByteArray o la clase CLongBinary. En general, CByteArray es la forma preferida de administrar datos binarios de gran tamaño.
CByteArray requiere una mayor sobrecarga que CLongBinary pero tiene mayor capacidad, como se describe en CByteArray (Clase). CLongBinary se describe brevemente en CLongBinary (Clase).
Para obtener información detallada sobre el uso de CByteArray para trabajar con grandes elementos de datos, vea la Nota técnica 45.
CByteArray (Clase)
CByteArray es una de las clases de colección de la biblioteca MFC. Los objetos CByteArray almacenan una matriz dinámica de bytes, que puede crecer según sea necesario. La clase proporciona acceso rápido por índice, como en las matrices de C++ integradas. Se pueden serializar y volcar objetos CByteArray con fines de diagnóstico. La clase proporciona funciones miembro para obtener y establecer bytes específicos, insertar y anexar bytes, y quitar un byte o todos los bytes. Estas funciones simplifican el análisis de los datos binarios. Por ejemplo, si el objeto binario es un objeto OLE, puede requerirse procesar algunos bytes de encabezado para alcanzar el objeto propiamente dicho.
Utilizar CByteArray en conjuntos de registros
Al dar el tipo CByteArray a un miembro de datos de campo del conjunto de registros, se proporciona una base fija a partir de la cual RFX puede administrar la transferencia de ese tipo de objetos entre el conjunto de registros y el origen de datos, y a través de ésta pueden manipularse los datos que contiene el objeto. RFX necesita una ubicación específica para los datos recuperados, así como una forma de obtener acceso a los datos subyacentes.
Para obtener información detallada sobre el uso de CByteArray para trabajar con grandes elementos de datos, vea la Nota técnica 45.
CLongBinary (Clase)
Un objeto CLongBinary es un shell sencillo creado a partir de un identificador HGLOBAL que apunta a un bloque de almacenamiento asignado en el montón. Al enlazar una columna de tabla que contiene un objeto binario grande, RFX asigna el identificador HGLOBAL cuando necesita transferir los datos al conjunto de registros y almacena el identificador en el campo CLongBinary del conjunto de registros.
A su vez, se utiliza el identificador HGLOBAL, m_hData, para trabajar con los datos, usándolo como se haría con los datos de cualquier identificador. Aquí es donde CByteArray tiene funcionalidad adicional.
Advertencia
Los objetos CLongBinary no pueden usarse como parámetros en llamadas de función.Asimismo, su implementación, que llama a ::SQLGetData, necesariamente ralentiza el rendimiento de desplazamiento para una instantánea desplazable.Esto también puede ocurrir al usar una llamada a ::SQLGetData para recuperar columnas de esquema dinámicas.
Vea también
Conceptos
Conjunto de registros: Obtener cálculos SUM y otros resultados agregados (ODBC)