Dynaset
Este tópico descreve dynasets e descreve seus disponibilidade.
Observação |
---|
Este tópico se aplica a classes da MFC ODBC, 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 sua vida útil, um objeto recordset no modo dynaset (normalmente chamado de um dynaset) permanece sincronizado com a fonte de dados da seguinte maneira.Em um ambiente multiusuário, outros usuários podem editar ou excluir registros de seu dynaset ou adicionar registros à tabela que representa o dynaset.Seu aplicativo adiciona ou exclui do conjunto de registros são refletidos em seu dynaset.Registros que outros usuários adicionarem à tabela não serão refletidos no seu dynaset até que recriar o dynaset, chamando seu Requery função de membro.Quando outros usuários excluem registros, código do MFC ignora as exclusões de registros.Alterações de edição de outros usuários registros existentes são refletidas no seu dynaset assim que você rolar para o registro afetado.
Da mesma forma, as edições feitas a registros em um dynaset são refletidas no dynasets em uso por outros usuários.Registros que você adicionar não são refletidos no dynasets outros usuários até que eles requery seus dynasets.Excluir de registros são marcados como "excluído" no conjunto de registros de outros usuários.Se você tiver várias conexões com o mesmo banco de dados (vários CDatabase objetos), conjuntos de registros associados a essas conexões possuem o mesmo status de conjuntos de registros de outros usuários.
Dynasets são mais valiosos quando os dados devem ser dinâmicos, como (por exemplo) em um sistema de reserva aérea.
Observação |
---|
Para usar dynasets, você deve ter um driver ODBC para a fonte de dados que suporta dynasets e a biblioteca de cursor ODBC não deve ser carregada.Para obter mais informações, consulte Disponibilidade de Dynasets. |
Para especificar que um conjunto de registros é um dynaset, passar CRecordset::dynaset como o primeiro parâmetro para o Abrir função de membro do objeto recordset.
Observação |
---|
Para dynasets atualizável, seu driver de ODBC deve suportar das instruções update posicionado ou a :: SQLSetPos a função de API de ODBC.Se ambos são suportados, o MFC usa :: SQLSetPos para a eficiência. |
Disponibilidade de Dynasets
As classes de banco de dados MFC suportam para dynasets se os seguintes requisitos são atendidos:
A biblioteca de cursor ODBC DLL não deve ser usado para esta fonte de dados.
Se a biblioteca de cursor é usada, ele máscaras alguma funcionalidade do driver ODBC subjacente que é necessário para suporte dynaset.Se você deseja usar dynasets (e seu driver de ODBC possui a funcionalidade necessária para dynasets, conforme descrito no restante desta seção) pode causar MFC para não carregar a biblioteca de cursor quando você cria um CDatabase objeto.Para obter mais informações, consulte ODBC e OpenEx ou Abrir função de membro da classe CDatabase.
Na terminologia do ODBC, dynasets e instantâneos são chamados como cursores.Um cursor é um mecanismo usado para controlar sua posição no conjunto de registros.
O driver ODBC para a fonte de dados deve oferecer suporte a cursores controlados por conjunto de chaves.
Os cursores controlados por conjunto de chaves gerenciar dados de uma tabela, obtendo e armazenando um conjunto de chaves.As chaves são usadas para obter os dados atuais da tabela quando o usuário rola até um determinado registro.Para determinar se seu driver fornece esse suporte, chame o :: SQLGetInfo função de API de ODBC com o SQL_SCROLL_OPTIONS parâmetro.
Se você tentar abrir um dynaset sem suporte keyset, obterá uma CDBException com o valor de código de retorno AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.
O driver ODBC para a fonte de dados deve suportar busca estendida.
Buscando estendida é a capacidade para rolar para trás, bem como encaminhar sobre os registros resultantes da consulta SQL.Para determinar se o driver oferece suporte a essa capacidade, chamar o :: SQLGetFunctions função de API de ODBC com o SQL_API_SQLEXTENDEDFETCH parâmetro.
Se você quiser dynasets atualizável (ou snapshots, no caso), seu driver de ODBC também deve suportar tanto o :: SQLSetPos a função de API de ODBC ou atualizações posicionadas.O :: SQLSetPos função permite MFC atualizar a fonte de dados sem enviar instruções de SQL.Se esse suporte está disponível, o MFC a usa preferência a fazer atualizações usando SQL.Para determinar se seu driver suporta :: SQLSetPos, chamada :: SQLGetInfo com o SQL_POS_OPERATIONS parâmetro.
Atualizações posicionadas usam sintaxe SQL (do formulário Onde atual de <cursorname>) para identificar uma determinada linha da tabela na fonte de dados.Para determinar se o driver oferece suporte a atualizações posicionadas, ligue para :: SQLGetInfo com o SQL_POSITIONED_STATEMENTS parâmetro.
Geralmente, MFC dynasets (mas não somente de encaminhamento recordsets) exigem um driver ODBC com conformidade de API de nível 2.Se o driver de fonte de dados está em conformidade com o conjunto de APIs de nível 1, você ainda pode usar instantâneos atualizáveis tanto somente leitura e conjuntos de registros somente de encaminhamento, mas não dynasets.No entanto, um driver de nível 1 pode oferecer suporte a cursores controlados por conjunto de chaves e dynasets se ele suporta busca estendida.Para obter mais informações sobre níveis de conformidade com ODBC, consulte ODBC.
Observação |
---|
Se você quiser usar instantâneos e dynasets, deve baseá-las em duas diferentes CDatabase objetos (duas conexões diferentes). |
Ao contrário dos instantâneos, que usam armazenamento intermediário mantido pela biblioteca de cursor ODBC, dynasets buscar um registro diretamente da fonte de dados assim que você rolar a ele.Isso mantém os registros selecionados originalmente o dynaset sincronizado com a fonte de dados.
Para obter uma lista de drivers ODBC incluído nesta versão do Visual C++ e informações sobre como obter drivers adicionais, consulte Lista de Driver ODBC.