ODBC: bezpośrednie wywoływanie funkcji ODBC API
Klasy baz danych zapewniają prostszy interfejs dla źródła danych niż ODBC. W związku z tym klasy nie hermetyzują wszystkich interfejsów API ODBC. W przypadku wszystkich funkcji, które wykraczają poza możliwości klas, należy bezpośrednio wywołać funkcje interfejsu API ODBC. Na przykład należy bezpośrednio wywołać funkcje wykazu ODBC (::SQLColumns
, ::SQLProcedures
, ::SQLTables
i innych).
Uwaga
Źródła danych ODBC są dostępne za pośrednictwem klas MFC ODBC, zgodnie z opisem w tym temacie lub za pośrednictwem klas MFC Data Access Object (DAO).
Aby bezpośrednio wywołać funkcję interfejsu API ODBC, należy wykonać te same czynności, które należy wykonać, jeśli wykonasz wywołania bez struktury. Są to następujące kroki:
Przydziel magazyn dla wszystkich wyników zwracanych przez wywołanie.
Przekaż odBC
HDBC
lubHSTMT
uchwyt, w zależności od podpisu parametru funkcji. Użyj makra AFXGetHENV , aby pobrać dojście ODBC.Zmienne
CDatabase::m_hdbc
składowe iCRecordset::m_hstmt
są dostępne, aby nie trzeba ich przydzielać i inicjować samodzielnie.Być może wywołaj dodatkowe funkcje ODBC, aby przygotować się do wywołania głównego lub wykonać następujące czynności.
Cofnij przydział magazynu po zakończeniu.
Aby uzyskać więcej informacji na temat tych kroków, zobacz dokumentację programisty ODBC.
Oprócz tych kroków należy wykonać dodatkowe kroki, aby sprawdzić wartości zwracane przez funkcję, upewnić się, że program nie czeka na zakończenie wywołania asynchronicznego itd. Te ostatnie kroki można uprościć przy użyciu makr AFX_SQL_ASYNC i AFX_SQL_SYNC. Aby uzyskać więcej informacji, zobacz Makra I globalne MFC.