ODBC : appel direct de fonctions API ODBC
Les classes de base de données fournissent une interface à une source de données plus simple que ODBC. Par conséquent, les classes n'encapsulent pas toutes les API ODBC. Vous devez appeler directement les fonctions API ODBC pour toute fonctionnalité en dehors des capacités des classes. Par exemple, vous devez appeler directement les fonctions de catalogue ODBC (::SQLColumns, ::SQLProcedures, ::SQLTables, entre autres).
Notes
Les sources de données ODBC sont accessibles via les classes ODBC MFC, comme le décrit cet article, ou via les classes DAO (Data Access Object) MFC.
Pour appeler directement une fonction API ODBC, vous devez procéder de la même façon que lorsque vous effectuez des appels sans la structure. Les étapes sont les suivantes :
Allouez un stockage pour tous les résultats retournés par l'appel.
Passez un handle ODBC HDBC ou HSTMT, selon la signature de paramètre de la fonction. Utilisez la macro AFXGetHENV pour récupérer le handle ODBC.
Les variables membres CDatabase::m_hdbc et CRecordset::m_hstmt sont disponibles ; vous ne devez donc pas les allouer, ni les initialiser vous-même.
Appelez peut-être des fonctions ODBC supplémentaires pour préparer ou suivre l'appel principal.
Libérez le stockage lorsque vous avez terminé.
Pour plus d'informations sur ces étapes, consultez le Kit de développement ODBC (Open Database Connectivity) SDK dans la documentation MSDN.
En plus de ces étapes, vous devrez également vérifier les valeurs retournées des fonctions, vous assurer que votre programme n'attend pas qu'un appel asynchrone se termine, etc. Pour simplifier ces dernières étapes, utilisez les macros AFX_SQL_ASYNC et AFX_SQL_SYNC. Pour plus d'informations, consultez Macros and Globals dans MFC Reference.