Dynaset
Este tópico descreve os dynasets e discute seus disponibilidade.
Observação |
---|
Este tópico se aplica às classes MFC ODBC, incluindo CRecordset. Para obter informações sobre dynasets nas classes DAO, consulte CDaoRecordset. Com o DAO, você pode abrir os conjuntos de registros do tipo dynaset. |
Um dynaset é um conjunto de registros com propriedades dinâmicas. Durante sua duração, um objeto recordset no modo de dynaset (geralmente 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 sua dynaset ou adicionar registros à tabela que seu dynaset representa. Registros de seu aplicativo adiciona ou exclui o conjunto de registros são refletidos no seu dynaset. Registros que outros usuários adicionarem a tabela não serão refletidos no seu dynaset até que você reconstruir o dynaset chamando seu Requery a função de membro. Quando outros usuários excluem registros, o código MFC ignora as exclusões de registros. Outros usuários as alterações de edição para os 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 em outros usuários dynasets até que eles requery seus dynasets. Excluir de registros são marcados como "excluídos" em outros usuários conjuntos de registros. Se você tiver várias conexões com o mesmo banco de dados (várias CDatabase objetos), conjuntos de registros associados a essas conexões possuem o mesmo status de conjuntos de registros de outros usuários.
Quando os dados devem ser dinâmicos, como (por exemplo) em um sistema de reserva aérea, dynasets são mais valiosos.
Observação |
---|
Para usar dynasets, você deve ter um driver ODBC para sua fonte de dados oferece suporte para 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 conjunto de registros é um dynaset, passe CRecordset::dynaset como o primeiro parâmetro para o Abrir a função de membro de seu objeto recordset.
Observação |
---|
Para dynasets atualizável, seu driver ODBC deve oferecer suporte a das instruções update posicionado ou a :: SQLSetPos a função de API ODBC. Se houver suporte para ambos, o MFC usa :: SQLSetPos para maior eficiência. |
Disponibilidade de Dynasets
As classes de banco de dados MFC aceita dynasets se os seguintes requisitos são atendidos:
A ODBC cursor library DLL não pode ser usado para esta fonte de dados.
Se a biblioteca de cursor for usada, máscaras de algumas funcionalidades do driver ODBC subjacente que é necessário para suporte de dynaset. Se você deseja usar dynasets (e seu driver de ODBC tem a funcionalidade necessária para dynasets, conforme descrito no restante desta seção), você poderá causar MFC para não carregar a biblioteca de cursor quando você cria um CDatabase objeto. Para obter mais informações, consulte ODBC e o OpenEx ou Abrir a função de membro da classe CDatabase.
Na terminologia do ODBC, dynasets e snapshots são denominados cursores. Um cursor é um mecanismo usado para acompanhar sua posição em um conjunto de registros.
O driver ODBC para sua fonte de dados deve oferecer suporte a cursores orientados para o conjunto de chaves.
Os cursores orientados para o conjunto de chaves gerenciar dados de uma tabela por obter e armazenar 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 o driver oferece esse suporte, chame o :: SQLGetInfo a função API ODBC com o SQL_SCROLL_OPTIONS parâmetro.
Se você tentar abrir um dynaset sem suporte do conjunto de chaves, você obterá uma CDBException com o valor do código de retorno AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.
O driver ODBC para sua fonte de dados deve oferecer suporte estendido a buscar.
Buscando estendida é a capacidade de rolar para trás, bem como encaminhar sobre os registros resultantes de sua consulta SQL. Para determinar se o driver oferece suporte a essa capacidade, chame o :: SQLGetFunctions a função API ODBC com o SQL_API_SQLEXTENDEDFETCH parâmetro.
Se você quiser dynasets atualizável (ou snapshots, no caso), o driver ODBC também deve suportar tanto o :: SQLSetPos a função de API ODBC ou atualizações de posições. O :: SQLSetPos função permite que a MFC atualizar a fonte de dados sem enviar instruções de SQL. Se esse suporte está disponível, o MFC o usa em preferência a fazer atualizações usando o SQL. Para determinar se o seu driver suporta :: SQLSetPos, chame :: SQLGetInfo com o SQL_POS_OPERATIONS parâmetro.
Atualizações posicionadas usam a sintaxe SQL (do formulário Onde CURRENT OF <cursorname>) para identificar uma determinada linha na tabela na fonte de dados. Para determinar se o driver oferece suporte a atualizações de posições, chame :: SQLGetInfo com o SQL_POSITIONED_STATEMENTS parâmetro.
Geralmente, o MFC dynasets (mas não somente de encaminhamento de conjuntos de registros) requerem um driver ODBC com conformidade de API de nível 2. Se o driver de fonte de dados está de acordo com o conjunto de APIs de nível 1, você ainda pode usar instantâneos atualizáveis tanto como somente leitura e forward-only de conjuntos de registros, mas não dynasets. No entanto, um driver de nível 1 pode suportar dynasets se ele suporta buscar estendido e cursores orientados para o conjunto de chaves. Para obter mais informações sobre os níveis de conformidade do ODBC, consulte ODBC.
Observação |
---|
Se você quiser usar snapshots e dynasets, você deve baseá-los em duas diferentes CDatabase objetos (duas conexões diferentes). |
Ao contrário de snapshots, que usam armazenamento intermediário de 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 que selecionou 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 drivers ODBC.