ODBC: chamando funções de API ODBC diretamente
As classes de banco de dados fornecem uma interface mais simples para uma fonte de dados do que o ODBC. Como resultado, as classes não encapsulam toda a API ODBC. Para qualquer funcionalidade que esteja fora das habilidades das classes, você precisa chamar as funções de API ODBC diretamente. Por exemplo, você precisa chamar as funções de catálogo ODBC (::SQLColumns
, ::SQLProcedures
, ::SQLTables
e outras) diretamente.
Observação
As fontes de dados ODBC são acessíveis por meio das classes ODBC do MFC, conforme descrito neste tópico, ou por meio das classes DAO (Objeto de Acesso a Dados) do MFC.
Para chamar uma função de API ODBC diretamente, você precisa seguir as mesmas etapas que se estivesse fazendo as chamadas sem a estrutura. As etapas são:
Aloque o armazenamento para quaisquer resultados retornados pela chamada.
Passe um identificador ODBC
HDBC
ouHSTMT
, dependendo da assinatura de parâmetro da função. Use a macro AFXGetHENV para recuperar o identificador ODBC.Variáveis de membro
CDatabase::m_hdbc
eCRecordset::m_hstmt
estão disponíveis para que você não precise alocá-las e inicializá-las por conta própria.Possivelmente, chame funções ODBC adicionais para preparar ou acompanhar a chamada principal.
Desaloque o armazenamento quando terminar.
Para obter mais informações sobre essas etapas, confira a Referência do Programador de ODBC.
Além dessas etapas, você precisa executar etapas extras para verificar os valores de retorno da função, garantir que o programa não esteja aguardando a conclusão de uma chamada assíncrona e assim por diante. Você pode simplificar essas últimas etapas usando as macros AFX_SQL_ASYNC e AFX_SQL_SYNC. Para obter mais informações, confira Macros e globais do MFC.