Partilhar via


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

Este tópico se aplicam às classes de MFC ODBC e às classes de MFC DAO.

Dica

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

Suponhamos que seu base de dados pode armazenar grandes blocos de dados, como bitmaps (fotografias de funcionário, mapas, imagens de produto, objetos OLE, e assim por diante). Esse tipo de dados é frequentemente chamado de um objeto binário grande (BLOB) ou o como:

  • Cada valor de campo for grande.

  • Diferentemente dos números e outros tipos de dados simples, não tem nenhum tamanho previsível.

  • Os dados são informes da perspectiva do programa.

Este tópico explica que oferece suporte às classes de base de dados fornecem trabalhando com esses objetos.

Gerenciando objetos grandes

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

CByteArray requer mais sobrecarga do que CLongBinary mas é mais capaz, conforme descrito em A classe de CByteArray. CLongBinary é descrita brevemente em A classe de CLongBinary.

Para obter informações detalhadas sobre como usar CByteArray para trabalhar com grandes itens de dados, consulte Observação 45 técnica.

Classe de CByteArray

CByteArray é uma das classes de coleção de MFC. Um objeto de CByteArray dinâmico armazena uma matriz de bytes — a matriz pode aumentar quando necessário. A classe fornece acesso rápido por índice, como a matrizes internos C++. os objetos deCByteArray podem ser serializados e despejado para fins de diagnóstico. As funções de membro de fontes da classe para obter e definir bytes especificados, inserir e anexar bytes, e o descarte de um byte ou todos os bytes. Essas instalações facilitam a análise dos dados binários. Por exemplo, se o objeto binário é um objeto OLE, você pode ter que trabalhar alguns bytes de cabeçalho para alcançar o objeto atual.

Usando CByteArray nos conjuntos de registros

Fornecendo a um membro de dados do campo do conjunto de registros o tipo CByteArray, você fornece uma base fixa que RFX pode gerenciar a transferência de um objeto entre o conjunto de registros e a fonte de dados e com os quais você pode manipular os dados no objeto. RFX precisa de um site específica para dados recuperados, e você precisa de uma forma de acessar os dados subjacentes.

Para obter informações detalhadas sobre como usar CByteArray para trabalhar com grandes itens de dados, consulte Observação 45 técnica.

Classe de CLongBinary

Um objeto de CLongBinary é um shell simples ao redor de um identificador de HGLOBAL em um bloco de armazenamento alocado no heap. Quando associa uma coluna da tabela que contém um objeto binário grande), RFX atribui a alça de HGLOBAL quando precisar transferir os dados ao conjunto de registros e armazena o identificador de CLongBinary no campo do conjunto de registros.

Por sua vez, você usa o identificador de HGLOBAL , m_hData, trabalhar com os dados propriamente ditos, operando nela como você faria em todos os dados do identificador. É aí que CByteArray adicionar recursos.

Aviso

Os objetos de CLongBinary não podem ser usados como parâmetros em chamadas de função.Além disso, a sua implementação, que chama ::SQLGetDatanecessariamente, velocidade do desempenho de rolagem para um instantâneo rolável.Isso também pode ser verdadeiro quando você usa uma chamada de ::SQLGetData você mesmo para recuperar colunas dinâmicas do esquema.

Consulte também

Conceitos

Conjunto de registros (ODBC)

Conjunto de registros: obtendo SUMs e outros resultados agregados (ODBC)

Registrar troca de campos (RFX)