Visão geral
Em muitas situações pode ser desejável para migrar aplicativos que usam classes de banco de dados ODBC do MFC para classes de banco de dados do DAO do MFC. Esta anotação técnica explicará em detalhes a maior parte das diferenças entre as classes de ODBC do MFC e o DAO. Com as diferenças em mente, não deve ser excessivamente difícil migrar aplicativos das classes ODBC para as classes do MFC se desejado.
Por que migrar do ODBC para o DAO?
Há um número de razões pelas quais você pode querer migrar aplicativos das Classes de banco de dados ODBC para as Classes de banco de dados DAO, mas a decisão não é necessariamente simples ou óbvia. Uma coisa a manter em mente é que o mecanismo de banco de dados Microsoft Jet que é usado pelo DAO pode ler qualquer origem de dados ODBC para o qual você tem um driver ODBC. Ele pode ser mais eficiente para usar as Classes de banco de dados ODBC ou chamada ODBC diretamente si mesmo, mas o mecanismo de banco de dados Microsoft Jet pode ler dados ODBC.
Existem alguns casos simples que facilitam a decisão de ODBC/DAO. Por exemplo, quando você só precisa acessar a dados em um formato que o mecanismo do Microsoft Jet pode ler diretamente (formato Access, FoxPro formato, formato do Excel e assim por diante) a escolha óbvia é usar as Classes de banco de dados DAO.
Casos mais complexos surgem quando seus dados existem em um servidor ou em uma variedade de diferentes servidores. Neste caso, a decisão de usar as classes de banco de dados ODBC ou as classes de banco de dados DAO é difícil. Se você quiser fazem coisas como associações heterogêneas (dados de junção de servidores em vários formatos como SQL Server e Oracle) e, em seguida, o mecanismo de banco de dados Microsoft Jet irá executar a associação para você em vez de forçá-lo a fazer o trabalho necessário se você utilizar as Classes de banco de dados ODBC ou chamada ODBC diretamente. Se você estiver usando um driver ODBC que oferece suporte a cursores de condutor, sua melhor escolha pode ser as classes de banco de dados ODBC.
A escolha pode ser complicada, então você pode querer escrever algum código de amostra para testar o desempenho de vários métodos, tendo em conta suas necessidades especiais. Esta anotação técnica presume que você já tomou a decisão de migrar das Classes de banco de dados ODBC para as classes de banco de dados DAO.
Semelhanças entre Classes de banco de dados ODBC e Classes de banco de dados MFC DAO
O design original das classes MFC ODBC foi baseado no modelo de objeto DAO que tem sido usado no Microsoft Access e Microsoft Visual Basic. Isto significa que existem muitas características comuns das classes MFC DAO e ODBC, que serão nem todos listados nesta seção. Em geral, os modelos de programação são os mesmos.
Para realçar algumas semelhanças:
Por exemplo, em ambos os modelos o procedimento para recuperar dados é criar e abrir um objeto de banco de dados, criar e abrir um objeto recordset e navegar (mover) Embora os dados executar alguma operação.
Diferenças entre o ODBC e Classes do MFC DAO
As classes DAO incluem mais objetos e um conjunto mais sofisticado de métodos, mas esta seção explicará em detalhes somente as diferenças de classes semelhantes e funcionalidade.
Provavelme&nte as diferenças mais óbvias entre as classes são as mudanças de nome para classes semelhantes e funções global. A seguinte lista mostra o ofnbsp de alterações de nome; os objetos, métodos e funções global associadas com as classes de banco de dados:
Classe ou função | Equivalente em Classes MFC DAO |
CDatabase | CDaoDatabase |
CDatabase:: ExecuteSQL | CDaoDatabase::Execute |
CRecordset | CDaoRecordset |
CRecordset::GetDefaultConnect | CDaoRecordset::GetDefaultDBName |
CFieldExchange | CDaoFieldExchange |
RFX_Bool | DFX_Bool |
RFX_Byte | DFX_Byte |
RFX_Int | DFX_Short |
RFX_Long | DFX_Long |
DFX_Currency | |
RFX_Single | DFX_Single |
RFX_Double | DFX_Double |
RFX_Date * | DFX_Date (COleDateTime-com base) |
RFX_Text | DFX_Text |
RFX_Binary | DFX_Binary |
RFX_LongBinary | DFX_LongBinary |
* A função RFX_Date baseia-se em CTime e TIMESTAMP_STRUCT.
As principais alterações à funcionalidade que possam afetar o seu aplicativo exigir alterações de nome mais do que simples estão listadas abaixo.
Com as classes ODBC MFC necessárias para definir essas opções via macros ou tipos enumerados.
Com as classes DAO, DAO fornece a definição dessas opções em um arquivo de cabeçalho (DBDAOINT.H). assim, o tipo de conjunto de registros é um membro enumerado de CRecordset, mas com o DAO é uma constante. Por exemplo você usaria instantâneo ao especificar o tipo de CRecordset no ODBC mas DB_OPEN_SNAPSHOT ao especificar o tipo de CDaoRecordset.
&Notanbsp; Enquanto instantâneos ODBC (CRecordset) podem ser atualizáveis dependendo o driver e o uso da biblioteca de cursor ODBC os DAO (CDaoRecordset) instantâneos são somente leitura. Se você estiver usando a biblioteca de cursores, instantâneos de CRecordset são atualizáveis. Se você estiver usando qualquer um dos drivers Microsoft do área de trabalho Driver Pack 3.0 sem a biblioteca de cursores ODBC, os instantâneos de CRecordset são somente leitura. Se você estiver usando outro driver, verifique a documentação do driver para ver se instantâneos (STATIC_CURSORS) são somente leitura.
Técnico anotações por número |nbsp; &Notas técnicas por categoria