Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve dynasets e discute sua disponibilidade.
Observação
Este tópico se aplica às classes ODBC do MFC, incluindo CRecordset. Para obter informações sobre dynasets nas classes DAO, consulte CDaoRecordset. Com o DAO, você pode abrir conjuntos de registros do tipo dynaset.
Um dynaset é um conjunto de registros com propriedades dinâmicas. Durante seu tempo de vida, um objeto de conjunto de registros no modo dynaset (geralmente chamado de dynaset) permanece sincronizado com a fonte de dados da seguinte maneira. Em um ambiente multiusuário, outros usuários podem editar ou excluir registros que estão em seu dynaset ou adicionar registros à tabela que seu dynaset representa. Os registros que seu aplicativo adiciona ou exclui do conjunto de registros são refletidos em seu dynaset. Os registos que outros utilizadores adicionarem à tabela não serão refletidos no seu dynaset até que você reconstrua o dynaset chamando a sua Requery função de membro. Quando outros usuários excluem registros, o código MFC ignora as exclusões em seu conjunto de registros. As alterações de edição de outros usuários em registros existentes são refletidas no seu dynaset assim que você rola para o registro afetado.
Da mesma forma, as edições feitas em registros em um dynaset são refletidas em dynasets em uso por outros usuários. Os registros que você adiciona não são refletidos nos dynasets de outros usuários até que eles consultem novamente seus dynasets. Os registros excluídos são marcados como "excluídos" nos conjuntos de registros de outros usuários. Se você tiver várias conexões com o mesmo banco de dados (vários CDatabase objetos), os conjuntos de registros associados a essas conexões terão o mesmo status que os conjuntos de registros de outros usuários.
Os dynasets são mais valiosos quando os dados devem ser dinâmicos, como (por exemplo) em um sistema de reservas de companhias aéreas.
Observação
Para usar dynasets, você deve ter um driver ODBC para sua fonte de dados que ofereça suporte a dynasets e a biblioteca de cursores ODBC não deve ser carregada. Para obter mais informações, consulte Disponibilidade de Dynasets.
Para especificar que um recordset é um dynaset, passe CRecordset::dynaset como o primeiro parâmetro para a função membro Open do objeto recordset.
Observação
Para dynasets atualizáveis, seu driver ODBC deve suportar instruções de atualização posicionadas ou a ::SQLSetPos função de API ODBC. Se ambos forem suportados, MFC usa ::SQLSetPos para eficiência.
Disponibilidade de Dynasets
As classes de banco de dados MFC suportam dynasets se os seguintes requisitos forem atendidos:
A DLL da biblioteca de cursores ODBC não deve estar em uso para essa fonte de dados.
Se a biblioteca de cursores for usada, ela mascarará algumas funcionalidades do driver ODBC subjacente que são necessárias para o suporte a dynaset. Se você quiser usar dynasets (e seu driver ODBC tem a funcionalidade necessária para dynasets, conforme descrito no restante desta seção), você pode fazer com que o MFC não carregue a biblioteca de cursores ao criar um
CDatabaseobjeto. Para obter mais informações, consulte ODBC e a função de membro OpenEx ou Open da classeCDatabase.Na terminologia ODBC, dynasets e snapshots são referidos como cursores. Um cursor é um mecanismo usado para manter o controle de sua posição em um conjunto de registros.
O driver ODBC para sua fonte de dados deve suportar cursores controlados por conjunto de chaves.
Os cursores controlados por conjunto de chaves gerenciam dados de uma tabela obtendo e armazenando um conjunto de chaves. As chaves são usadas para obter dados atuais da tabela quando o usuário rola para um registro específico. Para determinar se o driver fornece esse suporte, chame a
::SQLGetInfofunção de API ODBC com o parâmetro SQL_SCROLL_OPTIONS .Se você tentar abrir um dynaset sem suporte a conjunto de chaves, obterá um
CDBExceptioncom o valor do código de retorno AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.O driver ODBC para sua fonte de dados deve oferecer suporte à busca estendida.
A busca estendida é a capacidade de navegar para trás e para frente através dos registros resultantes da sua consulta SQL. Para determinar se o driver suporta essa capacidade, chame a
::SQLGetFunctionsfunção de API ODBC com o parâmetro SQL_API_SQLEXTENDEDFETCH .
Se pretender dynasets atualizáveis (ou instantâneos, por assim dizer), o seu driver ODBC também deve suportar a função de API ODBC ::SQLSetPos ou atualizações posicionadas. A ::SQLSetPos função permite que o MFC atualize a fonte de dados sem enviar instruções SQL. Se esse suporte estiver disponível, o MFC o usará em preferência para fazer atualizações usando SQL. Para verificar se o driver suporta ::SQLSetPos, chame ::SQLGetInfo com o parâmetro SQL_POS_OPERATIONS.
As atualizações posicionadas usam a sintaxe SQL (do formato WHERE CURRENT OF<cursorname>) para identificar uma linha específica na tabela na fonte de dados. Para determinar se o driver suporta atualizações posicionadas, chame ::SQLGetInfo com o parâmetro SQL_POSITIONED_STATEMENTS .
Geralmente, os dynasets MFC (mas não os conjuntos de registros somente para encaminhamento) exigem um driver ODBC com conformidade de API de nível 2. Se o driver da fonte de dados estiver em conformidade com o conjunto de APIs de nível 1, você/tu ainda poderá usar instantâneos atualizáveis, instantâneos somente de leitura, e conjuntos de registos em encaminhamento único, mas não conjuntos dinâmicos. No entanto, um driver de nível 1 pode suportar dynasets se suportar busca estendida e cursores controlados por conjunto de teclas. Para obter mais informações sobre os níveis de conformidade ODBC, consulte ODBC.
Observação
Se quiser usar instantâneos e dynasets, você deve baseá-los em dois objetos diferentes CDatabase (duas conexões diferentes).
Ao contrário dos snapshots, que usam armazenamento intermediário mantido pela biblioteca de cursores ODBC, os dynasets buscam um registro diretamente da fonte de dados assim que você rola para ela. Isso mantém os registros originalmente selecionados pelo dynaset sincronizados com a fonte de dados.
Para obter uma lista de drivers ODBC incluídos nesta versão do Visual C++ e para obter informações sobre como obter drivers adicionais, consulte Lista de drivers ODBC.