Recordset: Trabalhando com itens grandes de dados (ODBC)
Este tópico se aplica a classes MFC ODBC e classes MFC DAO.
Observação |
---|
Se você estiver usando as classes MFC DAO, gerenciar seus itens de dados grandes com a classe CByteArray em vez da classe CLongBinary.Se você estiver usando as classes 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 partes de dados, como bitmaps (fotografias de funcionários, mapas, imagens de produtos, objetos OLE e assim por diante).Esse tipo de dados é freqüentemente conhecido como um grande objeto binário (ou BLOB) porque:
Cada valor do campo é grande.
Ao contrário dos números e outros tipos de dados simples, ela tem nenhum tamanho previsível.
Os dados serã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 de 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 dados binários grandes.
CByteArrayrequer mais sobrecarga do que CLongBinary , mas é mais capacitado, conforme descrito em A classe CByteArray.CLongBinaryé descrito resumidamente em A classe CLongBinary.
Para obter informações detalhadas sobre o uso de CByteArray para trabalhar com itens de dados grande, consulte técnico anotação 45.
Classe CByteArray
CByteArrayé uma das classes de coleção do MFC.A CByteArray objeto armazena uma matriz de bytes dinâmica — a matriz pode aumentar se necessário.A classe fornece acesso rápido pelo índice, como com arrays de C++ interno.CByteArrayobjetos podem ser serializados e despejados para fins de diagnóstico.A classe fornece funções de membro para obter e definir bytes especificados, inserindo e acrescentando bytes e removendo um byte ou todos os bytes.Essas instalações fazer análise de dados binários.Por exemplo, se o objeto binário é um objeto OLE, você tem a trabalho alguns bytes de cabeçalho para acessar o objeto real.
Usando CByteArray em conjuntos de registros
Dando um membro de dados de campo de registros do tipo CByteArray, fornecem uma base fixa do qual RFX pode gerenciar a transferência de tal objeto entre registros e a fonte de dados e através do qual você pode manipular os dados dentro do objeto.RFX precisa de um site específico para dados recuperados e 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 grande, consulte técnico anotação 45.
Classe CLongBinary
A CLongBinary objeto é um shell simple ao redor de um HGLOBAL identificador de um bloco de armazenamento alocado no heap.Quando se vincula a uma coluna da tabela que contém um objeto binário grande, RFX aloca a HGLOBAL manipular quando ele precisa 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 os dados propriamente dito, operando nele como em qualquer você deseja manipular dados.É aqui onde CByteArray adiciona recursos.
Cuidado |
---|
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ê usar um :: SQLGetData de chamada para recuperar colunas do esquema dinâmico. |
Consulte também
Conceitos
Conjunto de registros: Obtendo somas e outros agregação resultados (ODBC)