SQL: Durchführen direkter SQL-Aufrufe (ODBC)
In diesem Thema wird Folgendes erläutert:
Wann Sie direkte SQL-Aufrufe verwenden sollten.
Wie Sie direkte SQL-Aufrufe für die Datenquelle durchführen.
Hinweis |
---|
Diese Informationen beziehen sich auf die MFC-ODBC-Klassen.Wenn Sie mit den MFC-DAO-Klassen arbeiten, lesen Sie in der DAO-Hilfe das Thema "Vergleich von Microsoft Jet Database Engine-SQL und ANSI-SQL". |
Wann Sie direkte SQL-Aufrufe verwenden sollten
Wenn Sie Tabellen anlegen, löschen oder ändern bzw. Indizes anlegen oder sonstige SQL-Funktionen aufrufen möchten, die das Schema der Datenquelle (ODBC) verändern, muss hierzu unter Verwendung von DDL (Database Definition Language) eine SQL-Anweisung direkt an die Datenquelle übergeben werden.Wenn Sie zur Entwurfszeit einen Assistenten für die Erstellung eines Recordsets verwenden, können Sie auswählen, welche Tabellenspalten im Recordset repräsentiert werden sollen.Hierbei sind Spalten ausgeschlossen, die Sie oder andere Benutzer der Datenquelle der Tabelle erst hinzufügen, nachdem das Programm kompiliert wurde.Die Datenbankklassen unterstützen DDL nicht direkt, Sie können aber trotzdem Code erstellen, um neue Spalten während der Laufzeit dynamisch an das Recordset zu binden.Weitere Informationen zu diesem Bindungsvorgang finden Sie unter Recordset: Dynamisches Binden von Datenspalten (ODBC).
Sie können das Schema mit DBMS oder einem anderen Tool verändern, mit dem DDL-Funktionen ausgeführt werden können.Sie können SQL-Anweisungen auch mit ODBC-Funktionsaufrufen verschicken, z. B. durch Aufruf einer vordefinierten Abfrage (gespeicherte Prozedur), die keine Datensätze zurückliefert.
Direkter Aufruf von SQL-Funktionen
Mit einem CDatabase-Klasse-Objekt können Sie einen direkten SQL-Aufruf durchführen.Stellen Sie die SQL-Anweisungszeichenfolge (gewöhnlich in CString) zusammen, und übergeben Sie diese an die CDatabase::ExecuteSQL-Memberfunktion des CDatabase-Objekts.Falls Sie eine SQL-Anweisung, die normalerweise Datensätze zurückliefert, mit ODBC-Funktionsaufrufen senden, werden die Datensätze ignoriert.