Recordset (ODBC)

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

Ein CRecordset-Objekt stellt eine Gruppe von Datensätzen dar, die in einer Datenquelle ausgewählt wurden. Die Datensätze können aus einem der folgenden Objekte stammen:

  • Eine Tabelle.

  • Eine Abfrage

  • Eine gespeicherte Prozedur, aus der auf mindestens eine Tabelle zugegriffen wird

Ein Beispiel für ein Recordset, das auf einer Tabelle basiert, ist „alle Kunden“, wobei auf eine Kunden-Tabelle zugegriffen wird. Ein Beispiel für eine Abfrage ist "alle Rechnungen für Joe Smith". Ein Beispiel für ein Recordset basierend auf einer gespeicherten Prozedur (manchmal auch als vordefinierte Abfrage bezeichnet) ist "alle delinquent-Konten", die eine gespeicherte Prozedur in der Back-End-Datenbank aufrufen. In einem Recordset können mehrere Tabellen aus derselben Datenquelle, aber keine Tabellen aus unterschiedlichen Datenquellen verknüpft werden.

Hinweis

Einige ODBC-Treiber unterstützen Sichten der Datenbank. Eine Sicht in diesem Sinn ist eine Abfrage, die ursprünglich mit der SQL-Anweisung CREATE VIEW erstellt wurde.

Recordset-Funktionen

Alle Recordset-Objekte haben die folgenden Eigenschaften:

  • Wenn die Datenquelle nicht schreibgeschützt ist, können Sie angeben, dass das Recordset aktualisierbar, erweiterbar oder schreibgeschützt sein soll. Ist das Recordset aktualisierbar, können Sie entweder die pessimistische oder die optimistische Sperr-Methode angeben, sofern der Treiber die entsprechende Methode unterstützt. Ist die Datenquelle schreibgeschützt, 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 einzuschränken, welche der verfügbaren Datensätze ausgewählt werden.

  • Sie können die Datensätze anhand von Spalten in aufsteigender oder absteigender Reihenfolgesortieren.

  • Sie können das Recordset parametrisieren, um die Recordsetauswahl zur Laufzeit festzulegen.

Momentaufnahmen und Dynasets

Es gibt zwei Hauptarten von Recordsets: Momentaufnahmen und Dynasets. Beide werden von der Klasse CRecordset unterstützt. Beide Recordsetarten haben die allgemeinen Merkmale aller Recordsets, aber in jeder Art wird die allgemeine Funktionalität in einer jeweils speziellen Weise erweitert. Momentaufnahmen bieten eine statische Ansicht der Daten und sind nützlich für Berichte und andere Situationen, in denen Sie eine Ansicht der Daten in der Form wünschen, in der sie zu einem bestimmten Zeitpunkt vorhanden waren. Dynasets sind nützlich, wenn Sie möchten, dass von anderen Benutzern vorgenommene Aktualisierungen im Recordset sichtbar sind, ohne dass das Recordset erneut abgefragt oder aktualisiert werden muss. Momentaufnahmen und Dynasets können aktualisierbar oder schreibgeschützt sein. Um Datensätze zu berücksichtigen, die von anderen Benutzern hinzugefügt oder gelöscht wurden, rufen Sie CRecordset::Requery auf.

CRecordset unterstützt auch zwei andere Arten von Recordsets: dynamische Recordsets und Vorwärtsrecordsets. Dynamische Recordsets sind mit Dynasets vergleichbar. In dynamischen Recordsets werden jedoch alle hinzugefügten oder gelöschten Datensätze berücksichtigt, ohne dass CRecordset::Requery aufgerufen wird. Aus diesem Grund sind dynamische Recordsets in der Regel teuer in Bezug auf die Verarbeitungszeit für das DBMS, und viele ODBC-Treiber unterstützen diese nicht. Im Gegensatz dazu bieten Vorwärtsrecordsets die effizienteste Methode des Datenzugriffs für Recordsets, die keine Updates oder kein Rückwärtsscrollen erfordern. Sie könnten beispielsweise ein Vorwärtsrecordset verwenden, um Daten von einer Datenquelle in eine andere zu migrieren, wobei Sie die Daten nur in Vorwärtsrichtung durchlaufen müssen. Um ein Vorwärtsrecordset zu verwenden, müssen Sie die beiden folgenden Schritte ausführen:

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

  • Geben Sie CRecordset::readOnly im DwOptions-Parameter von Open an.

    Hinweis

    Informationen zu den ODBC-Treiberanforderungen für Dynasetunterstützung 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.

Ihre Recordsets

Für jede einzelne Tabelle, Sicht oder gespeicherte Prozedur, auf die Sie zugreifen möchten, definieren Sie üblicherweise eine Klasse, die aus CRecordset abgeleitet ist. (Die Ausnahme ist eine Datenbankbeitritt, bei der ein Recordset Spalten aus zwei oder mehr Tabellen darstellt.) Wenn Sie eine Recordsetklasse ableiten, aktivieren Sie den Mechanismus für den Datensatzfeldaustausch (Record Field Exchange, RFX) oder den Massendatensatz-Feldaustausch (Bulk RFX), der dem DDX-Mechanismus (Dialog Data Exchange) ähnelt. RFX und Massen-RFX vereinfachen die Übertragung von Daten aus der Datenquelle in Ihr Recordset. Außerdem überträgt RFX Daten aus Ihrem Recordset in die Datenquelle. Weitere Informationen finden Sie unter Record Field Exchange (RFX) und Recordset: Abrufen von Datensätzen in Massen (ODBC).For more information, see Record Field Exchange (RFX) and Recordset: Fetching Records in Bulk (ODBC).For more information, see Record Field Exchange (RFX) and Recordset: Fetching Records in Bulk (ODBC).For more information,

Ein Recordset-Objekt ermöglicht Ihnen Zugriff auf alle ausgewählten Datensätze. Zum Scrollen durch die ausgewählten Datensätze verwenden Sie CRecordset-Memberfunktionen, etwa MoveNext und MovePrev. Gleichzeitig entspricht ein Recordset-Objekt nur einem der ausgewählten Datensätze, dem aktuellen Datensatz. Sie können sich die Felder des aktuellen Datensatzes ansehen, indem Sie Recordset-Klassenmembervariablen deklarieren, die den Spalten der Tabelle oder den Datensätzen entsprechen, die aus der Datenbankabfrage resultieren. Informationen zu Recordset-Datenelementen finden Sie unter Recordset: Architecture (ODBC).

In den folgenden Themen finden Sie ausführliche Informationen zur Verwendung von Recordset-Objekten. Die Themen sind in funktionsbezogenen Kategorien und in natürlicher Suchreihenfolge aufgeführt, um sequenzielles Lesen zu ermöglichen.

Themen über die Vorgehensweisen zum Öffnen, Lesen und Schließen von Recordsets

Themen über die Vorgehensweisen zum Ändern von Recordsets

Themen über etwas fortgeschrittenere Techniken

Themen zur Funktionsweise von Recordsets

Siehe auch

Open Database Connectivity (ODBC)
Nutzen von MFC-ODBC
Transaktion (ODBC)