Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Biblioteket För Microsoft Foundation-klasser (MFC) stöds fortfarande. Vi lägger dock inte längre till funktioner eller uppdaterar dokumentationen.
Makron och globalerna som anges nedan gäller för ODBC-baserade databasprogram. De används inte med DAO-baserade program.
Före MFC 4.2 gav makrona AFX_SQL_ASYNC och AFX_SQL_SYNC asynkrona åtgärder en möjlighet att ge tid till andra processer. Från och med MFC 4.2 ändrades implementeringen av dessa makron eftersom MFC ODBC-klasserna endast använde synkrona åtgärder. Makrot AFX_ODBC_CALL var nytt för MFC 4.2.
Databasmakron
| Namn | Description |
|---|---|
| AFX_ODBC_CALL | Anropar en ODBC API-funktion som returnerar SQL_STILL_EXECUTING.
AFX_ODBC_CALL anropar funktionen upprepade gånger tills den inte längre returnerar SQL_STILL_EXECUTING. |
| AFX_SQL_ASYNC | Anropar AFX_ODBC_CALL. |
| AFX_SQL_SYNC | Anropar en ODBC API-funktion som inte returnerar SQL_STILL_EXECUTING. |
Databasglober
| Namn | Description |
|---|---|
| AfxDbInitModule | Lägger till databasstöd för en vanlig MFC DLL som är dynamiskt länkad till MFC. |
| AfxGetHENV | Hämtar ett handtag till ODBC-miljön som för närvarande används av MFC. Du kan använda den här handtaget i direkta ODBC-anrop. |
AfxDbInitModule
För stöd för MFC-databas (eller DAO) från en vanlig MFC DLL som är dynamiskt länkad till MFC lägger du till ett anrop till den här funktionen i din vanliga MFC DLL-funktion för att initiera MFC-databasens CWinApp::InitInstance DLL.
Syntax
void AFXAPI AfxDbInitModule( );
Anmärkningar
Kontrollera att det här anropet inträffar före ett basklassanrop eller någon extra kod som kommer åt MFC-databasens DLL. MFC-databas-DLL:en är ett MFC-tilläggs-DLL; För att ett MFC-tilläggs-DLL ska kunna kopplas till en CDynLinkLibrary kedja måste det skapa ett CDynLinkLibrary objekt i kontexten för varje modul som ska använda den.
AfxDbInitModule skapar objektet CDynLinkLibrary i din vanliga MFC DLL-kontext så att det kopplas in i objektkedjan för CDynLinkLibrary den vanliga MFC-DLL:en.
Kravspecifikation
Huvudet:<afxdll_.h>
AFX_ODBC_CALL
Använd det här makrot för att anropa alla ODBC API-funktioner som kan returnera SQL_STILL_EXECUTING.
AFX_ODBC_CALL(SQLFunc)
Parameterar
SQLFunc
En ODBC API-funktion. Mer information om ODBC API-funktioner finns i Windows SDK.
Anmärkningar
AFX_ODBC_CALL anropar upprepade gånger funktionen tills den inte längre returnerar SQL_STILL_EXECUTING.
Innan du anropar AFX_ODBC_CALLmåste du deklarera en variabel, nRetCode, av typen RETCODE.
Observera att MFC ODBC-klasserna nu endast använder synkron bearbetning. För att kunna utföra en asynkron åtgärd måste du anropa funktionen SQLSetConnectOptionODBC API . Mer information finns i avsnittet "Kör funktioner asynkront" i Windows SDK.
Example
I det här exemplet används AFX_ODBC_CALL för att anropa SQLColumns funktionen ODBC API, som returnerar en lista över kolumnerna i tabellen med namnet av strTableName. Observera deklarationen av nRetCode och användningen av postuppsättningsdatamedlemmar för att skicka parametrar till funktionen. Exemplet illustrerar också att kontrollera resultatet av anropet med Check, en medlemsfunktion för klassen CRecordset. Variabeln prs är en pekare till ett CRecordset objekt som deklareras någon annanstans.
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"));
}
Kravspecifikation
Rubrik: afxdb.h
AFX_SQL_ASYNC
Implementeringen av makrot ändrades i MFC 4.2.
AFX_SQL_ASYNC(prs, SQLFunc)
Parameterar
Prs
En pekare till ett CRecordset objekt eller ett CDatabase objekt. Från och med MFC 4.2 ignoreras det här parametervärdet.
SQLFunc
En ODBC API-funktion. Mer information om ODBC API-funktioner finns i Windows SDK.
Anmärkningar
AFX_SQL_ASYNC anropar bara makrot AFX_ODBC_CALL och ignorerar prs-parametern . I versioner av MFC före 4.2 AFX_SQL_ASYNC användes för att anropa ODBC API-funktioner som kan returnera SQL_STILL_EXECUTING. Om en ODBC API-funktion returnerade SQL_STILL_EXECUTINGanropar prs->OnWaitForDataSourceden AFX_SQL_ASYNC .
Anmärkning
MFC ODBC-klasserna använder nu endast synkron bearbetning. För att kunna utföra en asynkron åtgärd måste du anropa funktionen SQLSetConnectOptionODBC API . Mer information finns i avsnittet "Kör funktioner asynkront" i Windows SDK.
Kravspecifikation
Sidhuvud afxdb.h
AFX_SQL_SYNC
Makrot AFX_SQL_SYNC anropar helt enkelt funktionen SQLFunc.
AFX_SQL_SYNC(SQLFunc)
Parameterar
SQLFunc
En ODBC API-funktion. Mer information om dessa funktioner finns i Windows SDK.
Anmärkningar
Använd det här makrot för att anropa ODBC API-funktioner som inte returnerar SQL_STILL_EXECUTING.
Innan du anropar AFX_SQL_SYNCmåste du deklarera en variabel, nRetCode, av typen RETCODE. Du kan kontrollera värdet nRetCode för efter makroanropet.
Observera att implementeringen av AFX_SQL_SYNC ändrade i MFC 4.2. Eftersom det inte längre krävdes AFX_SQL_SYNC någon kontroll av serverstatusen tilldelar du bara ett värde till nRetCode. I stället för att till exempel göra anropet
AFX_SQL_SYNC(::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
&nValue, sizeof(nValue), &cbValue));
du kan helt enkelt göra tilldelningen
nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
&nValue, sizeof(nValue), &cbValue);
Kravspecifikation
Sidhuvud afxdb.h
AfxGetHENV
Du kan använda det returnerade handtaget i direkta ODBC-anrop, men du får inte stänga handtaget eller anta att handtaget fortfarande är giltigt och tillgängligt efter att befintliga CDatabase- eller CRecordset-härledda objekt har förstörts.
HENV AFXAPI AfxGetHENV();
Returvärde
Handtaget till ODBC-miljön som för närvarande används av MFC. Kan vara SQL_HENV_NULL om det inte finns några CDatabase-objekt och inga CRecordset-objekt används.
Kravspecifikation
Sidhuvud afxdb.h