Freigeben über


ODBC: Direktes Aufrufen von ODBC-API-Funktionen

Aktualisiert: November 2007

Die Datenbankklassen stellen eine einfachere Schnittstelle zu einer Datenquelle zur Verfügung, als ODBC sie anbietet. Folglich schließen die Klassen nicht die komplette ODBC-API ein. Um Funktionalität zu nutzen, die außerhalb der Fähigkeiten der Klassen liegt, müssen Sie ODBC-API-Funktionen direkt aufrufen. Die ODBC-Katalogfunktionen (::SQLColumns, ::SQLProcedures, ::SQLTables usw.) müssen Sie z. B. direkt aufrufen.

Hinweis:

Auf ODBC-Datenquellen können Sie über die MFC-ODBC-Klassen zugreifen, wie in diesem Thema beschrieben, oder über die MFC-Datenzugriffsobjekt-Klassen (DAO-Klassen).

Um eine ODBC-API-Funktion direkt aufrufen zu können, müssen Sie dieselben Schritte ausführen wie für ein Aufrufen ohne Verwendung des Frameworks. Die Schritte sind:

  • Reservieren Sie Speicher für die beim Aufrufen zurückgelieferten Ergebnisse.

  • Übergeben Sie ein ODBC-Handle vom Typ HDBC oder vom Typ HSTMT, abhängig von der Parametersignatur der Funktion. Verwenden Sie das AFXGetHENV-Makro, um das ODBC-Handle abzurufen.

    Es stehen die CDatabase::m_hdbc-Membervariable und die CRecordset::m_hstmt-Membervariable zur Verfügung, sodass Sie die Handles nicht selbst reservieren und initialisieren müssen.

  • Rufen Sie bei Bedarf zusätzliche ODBC-Funktionen auf, um den Hauptaufruf vorzubereiten oder abzuschließen.

  • Geben Sie danach reservierten Speicher wieder frei.

Weitere Informationen über diese Schritte finden Sie im Open Database Connectivity (ODBC)-SDK in der MSDN-Dokumentation.

Zusätzlich zu diesen Schritten sollten Sie die Rückgabewerte der Funktion überprüfen, sicherstellen, dass das Programm nicht auf die Beendigung eines asynchronen Aufrufs wartet, usw. Diese letzten Schritte können Sie vereinfachen, wenn Sie das Makro AFX_SQL_ASYNC und das Makro AFX_SQL_SYNC verwenden. Weitere Informationen finden Sie in der MFC-Referenz unter Macros and Globals (nur auf Englisch verfügbar).

Siehe auch

Konzepte

Grundlagen zu ODBC