Recordset (ODBC)

Aktualisiert: November 2007

Dieses Thema bezieht sich auf die MFC-ODBC-Klassen.

Ein CRecordset-Objekt repräsentiert eine Gruppe von Datensätzen, die aus einer Datenquelle ausgewählt wurden. Die Datensätze können aus folgenden Objekten stammen:

  • aus einer Tabelle,

  • aus einer Abfrage

  • oder aus einer gespeicherten Prozedur, die auf eine oder mehrere Tabellen zugreift.

Ein Beispiel für ein Recordset, das auf einer Tabelle basiert, ist das Recordset "Alle Kunden", das auf eine Tabelle mit Kunden zugreift. Ein Beispiel für eine Abfrage ist "Alle Rechnungen an Joe Smith". Ein Beispiel für ein Recordset, das auf einer gespeicherten Prozedur (manchmal auch als vordefinierte Abfrage bezeichnet) basiert, ist "Alle Konten des Zahlungsunwilligen". Hiermit wird eine gespeicherte Prozedur in der Back-End-Datenbank aufgerufen. Ein Recordset kann zwei oder mehrere Tabellen derselben Datenquelle miteinander verknüpfen, allerdings keine Tabellen verschiedener Datenquellen.

Hinweis:

Informationen über das Ableiten von Recordset-Klassen mit den Assistenten finden Sie unter Hinzufügen eines MFC-ODBC-Consumers und Datenbankunterstützung, MFC-Anwendungs-Assistent.

Hinweis:

Einige ODBC-Treiber unterstützen Datenbankansichten. In diesem Zusammenhang steht der Begriff Ansicht für eine Abfrage, die mit der SQL-CREATE VIEW-Anweisung erstellt wurde. Die Assistenten unterstützen derzeit keine Ansichten, Sie können den entsprechenden Code aber selbst entwickeln.

Fähigkeiten der Recordset-Objekte

Alle Recordset-Objekte unterstützen die folgenden Fähigkeiten:

  • Falls das Recordset nicht schreibgeschützt ist, können Sie festlegen, dass das Recordset aktualisierbar, erweiterbar oder schreibgeschützt ist. Falls das Recordset aktualisierbar ist, haben Sie die Wahl zwischen vollständigen oder eingeschränkten Sperrmethoden, wenn der Treiber die entsprechende Unterstützung anbietet. Falls die Datenquelle schreibgeschützt ist, ist auch das Recordset schreibgeschützt.

  • Sie können Memberfunktionen aufrufen, um durch die ausgewählten Datensätze zu scrollen.

  • Sie können die Datensätze filtern, um aus den verfügbaren Datensätzen nur bestimmte auszuwählen.

  • Sie können die Datensätze in aufsteigender oder absteigender Reihenfolge sortieren, in einer oder in mehreren Spalten.

  • Sie können das Recordset parametrisieren, um die Auswahl des Recordsets zur Laufzeit anzupassen.

Snapshots und Dynasets

Es gibt zwei unterschiedliche Arten von Recordsets: Snapshots und Dynasets. Beide werden von der CRecordset-Klasse unterstützt. Beide Typen beherrschen die gemeinsamen Fähigkeiten aller Recordsets, jeder Typ erweitert den allgemeinen Funktionsumfang aber auf spezielle Weise. Snapshots stellen eine statische Ansicht der Daten zur Verfügung. Sie eignen sich gut für Berichte und andere Situationen, in denen Sie eine Ansicht der Daten in der Form benötigen, in der sie zu einem bestimmten Zeitpunkt vorlagen. Dynasets sind praktisch, wenn Sie möchten, dass von anderen Benutzern vorgenommene Änderungen sich im Recordset widerspiegeln, ohne dass Sie dieses erneut abfragen oder aktualisieren müssen. Snapshots und Dynasets können aktualisierbar oder schreibgeschützt sein. Wenn sich in dem Recordset widerspiegeln soll, welche Datensätze von anderen Benutzern hinzugefügt oder gelöscht wurden, rufen Sie CRecordset::Requery auf.

CRecordset unterstützt daneben noch zwei weitere Typen von Recordsets: dynamische Recordsets und Vorwärts-Recordsets. Dynamische Recordsets ähneln Dynasets. Diese spiegeln jedoch alle hinzugefügten oder gelöschten Datensätze wider, ohne dass Sie dafür CRecordset::Requery aufrufen müssen. Aus diesem Grund erfordern dynamische Recordsets viel Verarbeitungszeit des DBMS und werden von wenigen ODBC-Treibern unterstützt. Vorwärts-Recordsets stellen dagegen die effizienteste Methode für den Zugriff auf Daten von Recordsets dar, für die Sie Aktualisierung oder Rückwärtsscrollen nicht benötigen. Sie können ein Vorwärts-Recordset z. B. bei der Migration von Daten von einer Datenquelle in eine andere verwenden. Dabei müssen Sie nur vorwärts durch die Daten navigieren. Führen Sie folgende Schritte durch, um ein Vorwärts-Recordset zu verwenden:

  • Übergeben Sie die Option CRecordset::forwardOnly als nOpenType-Parameter der Open-Memberfunktion.

  • Geben Sie für Open im Parameter dwOptions das Argument CRecordset::readOnly an.

    Hinweis:

    Informationen darüber, welche Anforderungen ODBC-Treiber zur Dynasetunterstützung erfüllen müssen, finden Sie unter ODBC. Eine Liste der in dieser Version von Visual C++ mitgelieferten ODBC-Treiber sowie Informationen über den Erwerb zusätzlicher Treiber finden Sie unter Liste der ODBC-Treiber.

Recordset-Klassen

Normalerweise definieren Sie für jede Tabelle, Ansicht oder gespeicherte Prozedur, auf die Sie zugreifen möchten, eine von CRecordset abgeleitete Klasse. (Eine Ausnahme ist eine Datenbankverknüpfung, bei der ein Recordset Spalten aus zwei oder mehr Tabellen repräsentiert.) Wenn Sie eine Recordset-Klasse ableiten, aktivieren Sie den Datensatzfeldaustausch-Mechanismus (Record Field Exchange, RFX) oder den Sammel-Datensatzfeldaustausch-Mechanismus (Sammel-RFX), die dem Mechanismus des Dialogdatenaustauschs (Dialog Data Exchange, DDX) ähneln. RFX und Sammel-RFX vereinfachen den Datentransfer von der Datenquelle in das Recordset. RFX überträgt außerdem Daten aus dem Recordset zur Datenquelle. Weitere Informationen finden Sie unter Datensatzfeldaustausch (RFX) und Recordset: Abrufen von Datensätzen in einer Sammeloperation (ODBC).

Mit einem Recordset-Objekt haben Sie die Möglichkeit, auf alle ausgewählten Datensätze zuzugreifen. Sie scrollen durch die ausgewählten Datensätze mithilfe der CRecordset-Memberfunktionen, z. B. mit MoveNext oder MovePrev. Ein Recordset-Objekt repräsentiert einen einzelnen dieser Datensätze, den so genannten aktuellen Datensatz. Sie können die Felder des aktuellen Datensatzes untersuchen, indem Sie in der Recordset-Klasse Membervariablen deklarieren, die den Spalten der Tabelle oder der Datensätze entsprechen, die bei einer Datenbankabfrage zurückgegeben werden. Informationen über Recordsetdatenmember finden Sie unter Recordset: Architektur (ODBC).

In den folgenden Themen wird die Verwendung der Recordset-Objekte ausführlich erläutert. Die Themen sind in Funktionskategorien unterteilt und sollten möglichst in der angegebenen Reihenfolge gelesen werden.

Themen über das Öffnen, Lesen und Schließen von Recordsets

Themen über das Ändern von Recordsets

Themen über komplexere Einsatzmöglichkeiten

Themen über die Funktionsweise von Recordsets

Siehe auch

Aufgaben

Hinzufügen eines MFC-ODBC-Consumers

Konzepte

Open Database Connectivity (ODBC)

Transaktion (ODBC)