Partager via


Macros et objet Globals de base de données

Les macros et les globals répertoriés ci-dessous s’appliquent aux applications de base de données basées sur ODBC. Ils ne sont pas utilisés avec des applications basées sur DAO.

Avant MFC 4.2, les macros et AFX_SQL_SYNC ont donné aux opérations asynchrones AFX_SQL_ASYNC la possibilité de donner du temps à d’autres processus. À compter de MFC 4.2, l’implémentation de ces macros a changé car les classes ODBC MFC utilisaient uniquement des opérations synchrones. La macro AFX_ODBC_CALL était nouvelle pour MFC 4.2.

Macros de base de données

Nom Description
AFX_ODBC_CALL Appelle une fonction API ODBC qui retourne SQL_STILL_EXECUTING. AFX_ODBC_CALL appelle à plusieurs reprises la fonction jusqu’à ce qu’elle ne retourne SQL_STILL_EXECUTINGplus .
AFX_SQL_ASYNC Appelle AFX_ODBC_CALL.
AFX_SQL_SYNC Appelle une fonction API ODBC qui ne retourne SQL_STILL_EXECUTINGpas .

Globals de base de données

Nom Description
AfxDbInitModule Ajoute la prise en charge de la base de données pour une DLL MFC standard liée dynamiquement à MFC.
AfxGetHENV Récupère un handle dans l’environnement ODBC actuellement utilisé par MFC. Vous pouvez utiliser ce handle dans les appels ODBC directs.

AfxDbInitModule

Pour la prise en charge de la base de données MFC (ou DAO) à partir d’une DLL MFC standard liée dynamiquement à MFC, ajoutez un appel à cette fonction dans la fonction de CWinApp::InitInstance votre DLL MFC standard pour initialiser la DLL de base de données MFC.

Syntaxe

void AFXAPI AfxDbInitModule( );

Notes

Vérifiez que cet appel se produit avant tout appel de classe de base ou tout code ajouté qui accède à la DLL de base de données MFC. La DLL de base de données MFC est une DLL d’extension MFC ; pour qu’une DLL d’extension MFC soit câblée dans une CDynLinkLibrary chaîne, elle doit créer un CDynLinkLibrary objet dans le contexte de chaque module qui l’utilisera. AfxDbInitModule crée l’objet dans le CDynLinkLibrary contexte de la DLL MFC standard afin qu’il soit câblé dans la chaîne d’objets de la CDynLinkLibrary DLL MFC standard.

Spécifications

Header :<afxdll_.h>

AFX_ODBC_CALL

Utilisez cette macro pour appeler n’importe quelle fonction API ODBC qui peut retourner SQL_STILL_EXECUTING.

AFX_ODBC_CALL(SQLFunc)

Paramètres

SQLFunc
Fonction d’API ODBC. Pour plus d’informations sur les fonctions d’API ODBC, consultez le Kit de développement logiciel (SDK) Windows.

Notes

AFX_ODBC_CALL appelle à plusieurs reprises la fonction jusqu’à ce qu’elle ne retourne SQL_STILL_EXECUTINGplus .

Avant d’appeler AFX_ODBC_CALL, vous devez déclarer une variable, nRetCodede type RETCODE.

Notez que les classes ODBC MFC utilisent désormais uniquement le traitement synchrone. Pour effectuer une opération asynchrone, vous devez appeler la fonction SQLSetConnectOptionAPI ODBC . Pour plus d’informations, consultez la rubrique « Exécution asynchrone de fonctions » dans le Kit de développement logiciel (SDK) Windows.

Exemple

Cet exemple utilise AFX_ODBC_CALL pour appeler la SQLColumns fonction API ODBC, qui retourne une liste des colonnes de la table nommée par strTableName. Notez la déclaration et l’utilisation des membres de nRetCode données recordset pour passer des paramètres à la fonction. L’exemple illustre également la vérification des résultats de l’appel avec Check, une fonction membre de classe CRecordset. La variable prs est un pointeur vers un CRecordset objet, déclaré ailleurs.

RETCODE nRetCode;

AFX_ODBC_CALL(::SQLColumns(prs->m_hstmt, (SQLTCHAR*)NULL, SQL_NTS, (SQLTCHAR*)NULL,
   SQL_NTS, (SQLTCHAR*)strTableName.GetBuffer(), SQL_NTS, (SQLTCHAR*)NULL, SQL_NTS));

if (!prs->Check(nRetCode))
{
   AfxThrowDBException(nRetCode, prs->m_pDatabase, prs->m_hstmt);
   TRACE(_T("SQLColumns failed\n"));
}

Spécifications

En-tête : afxdb.h

AFX_SQL_ASYNC

L’implémentation de cette macro a changé dans MFC 4.2.

AFX_SQL_ASYNC(prs, SQLFunc)

Paramètres

Prs
Pointeur vers un CRecordset objet ou un CDatabase objet. À compter de MFC 4.2, cette valeur de paramètre est ignorée.

SQLFunc
Fonction d’API ODBC. Pour plus d’informations sur les fonctions d’API ODBC, consultez le Kit de développement logiciel (SDK) Windows.

Notes

AFX_SQL_ASYNC appelle simplement la macro AFX_ODBC_CALL et ignore le paramètre prs . Dans les versions de MFC antérieures à la version 4.2, AFX_SQL_ASYNC a été utilisée pour appeler des fonctions d’API ODBC susceptibles de retourner SQL_STILL_EXECUTING. Si une fonction d’API ODBC a retourné SQL_STILL_EXECUTING, AFX_SQL_ASYNC appelait prs->OnWaitForDataSource.

Remarque

Les classes ODBC MFC utilisent désormais uniquement le traitement synchrone. Pour effectuer une opération asynchrone, vous devez appeler la fonction SQLSetConnectOptionAPI ODBC . Pour plus d’informations, consultez la rubrique « Exécution asynchrone de fonctions » dans le Kit de développement logiciel (SDK) Windows.

Spécifications

En-tête afxdb.h

AFX_SQL_SYNC

La AFX_SQL_SYNC macro appelle simplement la fonction SQLFunc.

AFX_SQL_SYNC(SQLFunc)

Paramètres

SQLFunc
Fonction d’API ODBC. Pour plus d’informations sur ces fonctions, consultez le Kit de développement logiciel (SDK) Windows.

Notes

Utilisez cette macro pour appeler des fonctions d’API ODBC qui ne retourneront SQL_STILL_EXECUTINGpas .

Avant d’appeler AFX_SQL_SYNC, vous devez déclarer une variable, nRetCodede type RETCODE. Vous pouvez vérifier la valeur d’après nRetCode l’appel de macro.

Notez que l’implémentation de AFX_SQL_SYNC la modification dans MFC 4.2. Étant donné que la vérification de l’état du serveur n’a plus été requise, AFX_SQL_SYNC il suffit d’affecter une valeur à nRetCode. Par exemple, au lieu d’effectuer l’appel

AFX_SQL_SYNC(::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue));

vous pouvez simplement effectuer l’affectation

nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue);

Spécifications

En-tête afxdb.h

AfxGetHENV

Vous pouvez utiliser le handle retourné dans les appels ODBC directs, mais vous ne devez pas fermer le handle ou supposer que le handle est toujours valide et disponible après la destruction d’objets existants CDatabaseou CRecordsetdérivés.

HENV AFXAPI AfxGetHENV();

Valeur de retour

Handle de l’environnement ODBC actuellement utilisé par MFC. Peut être SQL_HENV_NULL s’il n’existe aucun objet CDatabase et aucun objet CRecordset en cours d’utilisation.

Spécifications

En-tête afxdb.h

Voir aussi

Macros et globals