ODBC : appel direct de fonctions API ODBC
Les classes de base de données fournissent une interface plus simple à une source de données que ODBC. Par conséquent, les classes n’encapsulent pas toutes les API ODBC. Pour toutes les fonctionnalités qui se trouvent en dehors des capacités des classes, vous devez appeler directement les fonctions d’API ODBC. Par exemple, vous devez appeler directement les fonctions de catalogue ODBC (::SQLColumns
, ::SQLProcedures
, ::SQLTables
et d’autres).
Remarque
Les sources de données ODBC sont accessibles via les classes ODBC MFC, comme décrit dans cette rubrique, ou via les classes DAO (Data Access Object) MFC.
Pour appeler directement une fonction API ODBC, vous devez effectuer les mêmes étapes que si vous effectuez les appels sans l’infrastructure. Ces étapes sont les suivantes :
Allouez le stockage pour tous les résultats retournés par l’appel.
Transmettez un odbc
HDBC
ouHSTMT
un handle, en fonction de la signature de paramètre de la fonction. Utilisez la macro AFXGetHENV pour récupérer le handle ODBC.Les variables
CDatabase::m_hdbc
membres etCRecordset::m_hstmt
sont disponibles afin que vous n’ayez pas besoin d’allouer et d’initialiser ces variables vous-même.Appelez peut-être des fonctions ODBC supplémentaires pour préparer ou suivre l’appel principal.
Libérer le stockage lorsque vous avez terminé.
Pour plus d’informations sur ces étapes, consultez la référence du programmeur ODBC.
En plus de ces étapes, vous devez effectuer des étapes supplémentaires pour vérifier les valeurs de retour de fonction, vérifier que votre programme n’attend pas la fin d’un appel asynchrone, et ainsi de suite. Vous pouvez simplifier ces dernières étapes à l’aide des macros AFX_SQL_ASYNC et AFX_SQL_SYNC. Pour plus d’informations, consultez macros et globals MFC.