Partilhar via


Conjunto de registros: Trabalhando com itens de dados grandes (ODBC)

Este tópico se aplica às classes ODBC do MFC e às classes do MFC DAO.

Observação

Se você estiver usando as classes MFC DAO, gerencie seus itens de dados grandes com a classe CByteArray em vez da classe CLongBinary. Se você estiver usando as classes ODBC MFC com busca de linha em massa, use CLongBinary em vez de CByteArray. Para obter mais informações sobre a busca de linhas em massa, consulte Recordset: Buscando registros em massa (ODBC).

Suponha que seu banco de dados possa armazenar grandes partes de dados, como bitmaps (fotografias de funcionários, mapas, imagens de produtos, objetos OLE e assim por diante). Este tipo de dados é frequentemente referido como um objeto binário grande (ou BLOB) porque:

  • Cada valor de campo é grande.

  • Ao contrário de números e outros tipos de dados simples, não tem tamanho previsível.

  • Os dados não têm forma do ponto de vista do seu programa.

Este tópico explica o suporte que as classes de banco de dados fornecem para trabalhar com esses objetos.

Gerenciando objetos grandes

Os conjuntos de registros têm duas maneiras de resolver a dificuldade especial de gerenciar objetos binários grandes. Você pode usar a classe CByteArray ou a classe CLongBinary. Em geral, CByteArray é a maneira preferida de gerenciar grandes dados binários.

CByteArray requer mais sobrecarga do que CLongBinary mas é mais capaz, conforme descrito em The CByteArray Class. CLongBinary é descrito brevemente em The CLongBinary Class.

Para obter informações detalhadas sobre como usar CByteArray para trabalhar com itens de dados grandes, consulte a Nota Técnica 45.

Classe CByteArray

CByteArray é uma das classes de coleção MFC. Um CByteArray objeto armazena uma matriz dinâmica de bytes — a matriz pode crescer, se necessário. A classe fornece acesso rápido por índice, como acontece com matrizes C++ integradas. CByteArray Os objetos podem ser serializados e despejados para fins de diagnóstico. A classe fornece funções de membro para obter e definir bytes especificados, inserir e acrescentar bytes e remover um byte ou todos os bytes. Esses recursos facilitam a análise dos dados binários. Por exemplo, se o objeto binário for um objeto OLE, talvez seja necessário trabalhar com alguns bytes de cabeçalho para alcançar o objeto real.

Usando CByteArray em conjuntos de registros

Ao fornecer a um membro de dados de campo do seu conjunto de registros o tipo CByteArray, você fornece uma base fixa a partir da qual a RFX pode gerenciar a transferência de tal objeto entre seu conjunto de registros e a fonte de dados e através da qual você pode manipular os dados dentro do objeto. O RFX precisa de um site específico para dados recuperados e você precisa de uma maneira de acessar os dados subjacentes.

Para obter informações detalhadas sobre como usar CByteArray para trabalhar com itens de dados grandes, consulte a Nota Técnica 45.

Classe CLongBinary

Um objeto CLongBinary é um shell simples em torno de um HGLOBAL identificador para um bloco de armazenamento alocado no heap. Quando vincula uma coluna de tabela contendo um objeto binário grande, a RFX aloca o HGLOBAL identificador quando precisa transferir os dados para o conjunto de registros e armazena o CLongBinary identificador no campo do conjunto de registros.

Por sua vez, você usa o HGLOBAL manípulo m_hData, para trabalhar com os dados, operando com ele como faria com qualquer outro manípulo de dados. É aqui que o CByteArray adiciona recursos.

Atenção

Objetos CLongBinary não podem ser usados como parâmetros em chamadas de função. Além disso, sua implementação, que chama ::SQLGetData, necessariamente diminui o desempenho de rolagem para um instantâneo rolável. Isto também pode ser verdade quando se utiliza uma chamada ::SQLGetData para recuperar colunas de esquema dinâmico.

Ver também

Conjunto de registros (ODBC)
Conjunto de registros: Obtendo somas e outros resultados agregados (ODBC)
Troca de campos de registro (RFX)