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_EXECUTING plus . |
AFX_SQL_ASYNC | Appelle AFX_ODBC_CALL . |
AFX_SQL_SYNC | Appelle une fonction API ODBC qui ne retourne SQL_STILL_EXECUTING pas . |
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_EXECUTING
plus .
Avant d’appeler AFX_ODBC_CALL
, vous devez déclarer une variable, nRetCode
de 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 SQLSetConnectOption
API 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 SQLSetConnectOption
API 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_EXECUTING
pas .
Avant d’appeler AFX_SQL_SYNC
, vous devez déclarer une variable, nRetCode
de 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 CDatabase
ou CRecordset
dé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