Partilhar via


O conjunto de registros: Trabalhando com itens grandes de dados (ODBC)

Este tópico se aplica para as classes de ODBC do MFC e as classes do MFC DAO.

ObservaçãoObservação

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

Suponha que seu banco de dados pode armazenar grandes pedaços de dados, como bitmaps (fotografias dos funcionários, mapas, imagens de produtos, objetos OLE e assim por diante). Esse tipo de dados é conhecido como um grande objeto binário (ou BLOB) porque:

  • Cada valor do campo é grande.

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

  • Os dados são formless, da perspectiva do seu programa.

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

Gerenciando objetos grandes

Conjuntos de registros tem duas maneiras de resolver a dificuldade especial do gerenciamento de objetos binários grandes. Você pode usar a classe CByteArray ou você pode usar a classe CLongBinary. Em geral, CByteArray é a melhor maneira de gerenciar grandes dados binários.

CByteArrayrequer mais sobrecarga do que CLongBinary , mas tem mais capacidade, conforme descrito em A classe de CByteArray. CLongBinaryé descrito resumidamente no A classe de CLongBinary.

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

Classe de CByteArray

CByteArrayé uma das classes de coleção do MFC. A CByteArray objeto armazena uma matriz de bytes a dinâmica — a matriz pode crescer, se necessário. A classe fornece acesso rápido pelo índice, como com arrays de C++ internos. CByteArrayobjetos podem ser serializados e despejados para fins de diagnóstico. A classe fornece funções de membro para Obtendo e definindo os bytes especificados, inserindo e acrescentando bytes e a remoção de um byte ou todos os bytes. Esses recursos tornam analisando os dados binários mais fácil. Por exemplo, se o binário é um objeto OLE, talvez você precise trabalhar por meio de alguns bytes de cabeçalho para acessar o objeto real.

Usando CByteArray em conjuntos de registros

Dando um membro de dados de campo do seu conjunto de registros do tipo CByteArray, que você fornecer uma base fixa do qual RFX pode gerenciar a transferência de tal objeto entre o seu conjunto de registros e a fonte de dados e por meio do qual você pode manipular os dados dentro do objeto. RFX precisa de um site específico para os dados recuperados, e você precisa de uma maneira de acessar os dados subjacentes.

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

Classe de CLongBinary

A CLongBinary o objeto é um shell simple ao redor de um HGLOBAL identificador para um bloco de armazenamento alocada no heap. Quando se vincula a uma coluna da tabela que contém um objeto binário grande, RFX aloca a HGLOBAL tratar quando ele precisa para transferir os dados para o conjunto de registros e armazena o identificador na CLongBinary campo do conjunto de registros.

Por sua vez, use o HGLOBAL tratar, m_hData, para trabalhar com dados em si, operando sobre ele, como você faria em qualquer alça de dados. É aqui onde CByteArray adiciona recursos.

Aviso

CLongBinary objetos não podem ser usados como parâmetros em chamadas de função. Além disso, sua implementação, chama :: SQLGetData, necessariamente diminui o desempenho de rolagem para um snapshot rolável. Isso também pode ser verdadeiro quando você usa um :: SQLGetData chamar a mesmo para recuperar as colunas do esquema dinâmico.

Consulte também

Conceitos

O conjunto de registros (ODBC)

O conjunto de registros: Obtendo somas e outros resultados agregados (ODBC)

Troca de campo do registro (RFX)