ODBC: Biblioteca de Cursor do ODBC
Este tópico descreve a biblioteca de Cursor ODBC e explica como usá-lo.Para obter mais informações, consulte:
Biblioteca de cursor e Drivers ODBC de nível 1
Atualizações posicionadas e colunas de carimbo de hora
Usando a biblioteca de Cursor
A biblioteca de Cursor ODBC é uma biblioteca de vínculo dinâmico (DLL) que reside entre o Gerenciador de Driver ODBC e o driver.Em termos ODBC, um driver mantém um cursor para controlar sua posição no conjunto de registros.O cursor marca a posição no conjunto de registros para o qual você já percorreu — o registro atual.
Biblioteca de cursor e Drivers ODBC de nível 1
A biblioteca de Cursor ODBC fornece drivers de nível 1 os novos recursos a seguintes:
Avançar e retroceder rolagem.Drivers de nível 2 não é necessário a biblioteca de cursor porque eles já estão roláveis.
Suporte para snapshots.A biblioteca de cursores gerencia um buffer que contém os registros do snapshot.Esse buffer reflete exclusões e edição de registros, mas não as adições, exclusões ou edições de outros usuários do programa.Portanto, o snapshot é tão atual como buffer da biblioteca de cursor.O buffer também não reflete suas própria adições até que você chamar Requery.Dynasets não use a biblioteca de cursor.
A biblioteca de cursores lhe instantâneos (Cursores estáticos) mesmo se eles normalmente não são suportados pelo seu driver.Se o driver já oferecer suporte a Cursores estáticos, você não precisará carregar a biblioteca de cursor para obter suporte instantâneo.Se você usar a biblioteca de cursores, você pode usar apenas instantâneos e conjuntos de registros somente de encaminhamento.Se seu driver suporta dynasets (cursores KEYSET_DRIVEN) e você deseja usá-los, você não deve usar a biblioteca de cursor.Se você quiser usar instantâneos e dynasets, deve baseá-las em duas diferentes CDatabase , a menos que seu driver suporta ambos os objetos (duas conexões diferentes).
Atualizações posicionadas e colunas de carimbo de hora
Observação |
---|
Fontes de dados ODBC são acessíveis através das classes MFC ODBC, como descrito neste tópico ou através das classes MFC Data Access Object (DAO). |
Observação |
---|
Se seu driver de ODBC suporta SQLSetPos, o MFC usa se estiver disponível, este tópico não se aplica a você. |
A maioria dos drivers de nível 1 não oferecem suporte a atualizações posicionadas.Esses drivers contam com a biblioteca de cursores para emular os recursos de drivers de nível 2 em relação a isso.A biblioteca de cursores emula suporte atualizar posicionado fazendo uma atualização pesquisada nos campos inalterados.
Em alguns casos, um conjunto de registros pode conter uma coluna de carimbo de hora como um desses campos inalterados.Dois problemas surgem usando conjuntos de registros do MFC com tabelas que contêm colunas de carimbo de hora.
O primeiro problema diz respeito a instantâneos atualizáveis em tabelas com colunas de carimbo de hora.Se a tabela à qual está vinculado o snapshot contém uma coluna de carimbo de hora, você deve chamar Requery depois de chamar Editar e atualização.Se não, você não poderá editar o mesmo registro novamente.Quando você chamar Editar e atualização, o registro é gravado para a fonte de dados e a coluna de carimbo de hora é atualizada.Se você não chamar Requery, o valor de carimbo de hora para o registro de snapshot não corresponde ao carimbo de hora correspondente na fonte de dados.Quando você tenta atualizar o registro novamente, a fonte de dados pode não permitir a atualização devido a incompatibilidade de.
A segunda questão diz respeito a limitações da classe a CTime quando usado com o RFX_Date função para transferir informações de data e hora ou para uma tabela.Processamento de CTime objeto impõe alguma sobrecarga no formulário processamento extra intermediário durante a transferência de dados.O intervalo de datas de CTime objetos também podem limitar muito para alguns aplicativos.Uma nova versão do RFX_Date função pega um ODBC TIMESTAMP_STRUCT parâmetro em vez de um CTime objeto.Para obter mais informações, consulte RFX_Date em Macros e Globals na Referência MFC.
Usando a biblioteca de Cursor
Quando você se conectar a uma fonte de dados — chamando CDatabase::OpenEx ou CDatabase::Open — você pode especificar se deseja usar a biblioteca de cursor para a fonte de dados.Se você criar snapshots na fonte de dados, especificar o CDatabase::useCursorLib opção no dwOptions parâmetro para OpenEx ou especificar TRUE para o bUseCursorLib parâmetro para Abrir (o valor padrão é TRUE).Se seu driver de ODBC suporta dynasets e desejar abrir dynasets na fonte de dados, não use a biblioteca de cursores (ele máscaras alguma funcionalidade de driver necessária para dynasets).Nesse caso, não especifique CDatabase::useCursorLib em OpenEx ou especificar FALSE para o bUseCursorLib parâmetro no Abrir.