ODBC: A biblioteca de cursores ODBC
Este tópico descreve a ODBC Cursor Library e explica como usá-lo. For more information, see:
Biblioteca de cursor e Drivers ODBC de nível 1
Atualizações de posições e colunas de carimbo de hora
Usando a biblioteca de Cursor
A ODBC Cursor Library é uma biblioteca de vínculo dinâmico (DLL) que reside entre o ODBC Driver Manager e o driver. Em termos ODBC, um driver mantém um cursor para controlar sua posição no conjunto de registros. O cursor marcar a posição do conjunto de registros para o qual você já percorreu — o registro atual.
Biblioteca de cursor e Drivers ODBC de nível 1
A ODBC Cursor Library oferece os seguintes novos recursos de drivers de nível 1:
Avançar e retroceder de rolagem. Drivers de nível 2 não é necessário a biblioteca de cursor porque já estão roláveis.
Suporte para snapshots. A biblioteca de cursor gerencia um buffer que contém os registros do snapshot. Esse buffer reflete as exclusões e edição de registros, mas não as adições, exclusões ou edições de outros usuários do seu programa. Portanto, o instantâneo é tão atual como o buffer da biblioteca de cursor. O buffer também não reflita seus próprio adições até que você chame Requery. Dynasets não use a biblioteca de cursor.
A biblioteca de cursor lhe snapshots (Cursores estáticos) mesmo se eles normalmente não são suportados pelo seu driver. Se o seu driver já oferece suporte a Cursores estáticos, você não precisará carregar a biblioteca de cursor para obter suporte de instantâneo. Se você usar a biblioteca de cursor, você pode usar somente os instantâneos e conjuntos de registros somente de encaminhamento. Se o driver oferece suporte para dynasets (cursores KEYSET_DRIVEN) e você deseja usá-los, você não deve usar a biblioteca de cursor. Se você quiser usar snapshots e dynasets, você deve baseá-los em duas diferentes CDatabase , a menos que o seu driver suporta ambos os objetos (duas conexões diferentes).
Atualizações de posições e colunas de carimbo de hora
Observação |
---|
Fontes de dados ODBC são acessíveis por meio das classes do MFC ODBC, conforme descrito neste tópico, ou as classes do MFC Data Access Object (DAO). |
Observação |
---|
Se o 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 cursor emula update posicionado suporte 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 contêm colunas de carimbo de hora.
O primeiro problema preocupações com instantâneos atualizáveis em tabelas com colunas de carimbo de hora. Se a tabela à qual o snapshot está vinculado contém uma coluna de carimbo de hora, você deve chamar Requery depois de chamar Editar e atualização. Caso contrário, 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 mais ao carimbo de hora correspondente na fonte de dados. Ao tentar atualizar o registro novamente, a fonte de dados pode não permitir a atualização devido à incompatibilidade de.
A segunda questão diz respeito a limitações da classe a CTime quando usado com o RFX_Date funcionar para transferir informações de data e hora ou a partir de uma tabela. Processamento de CTime objeto impõe alguma sobrecarga na forma de processamento extra intermediário durante a transferência de dados. O intervalo de datas de CTime objetos também podem estar limitando demais 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 da 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, especifique o CDatabase::useCursorLib opção na dwOptions parâmetro para OpenEx ou especificar TRUE para o bUseCursorLib parâmetro para Abrir (o valor padrão é TRUE). Se o driver ODBC oferece suporte para dynasets e você deseja abrir dynasets na fonte de dados, não use a biblioteca de cursores (mascara algumas funcionalidades de driver necessária para dynasets). Nesse caso, não especifique CDatabase::useCursorLib na OpenEx ou especificar FALSE para o bUseCursorLib parâmetro em Abrir.