ODBC: Die ODBC-Cursorbibliothek

In diesem Thema wird die ODBC-Cursorbibliothek beschrieben und erläutert, wie sie verwendet wird. Weitere Informationen finden Sie unter:

Die ODBC-Cursorbibliothek ist eine DLL (Dynamic Link Library), die sich zwischen dem ODBC-Treiber-Manager und dem Treiber befindet. In ODBC-Ausdrücken Standard ein Treiber einen Cursor auf, um die Position im Recordset nachzuverfolgen. Der Cursor markiert die Position in dem Recordset, zu dem Sie bereits scrollen – den aktuellen Datensatz.

Cursorbibliothek und ODBC-Treiber der Ebene 1

Die ODBC-Cursorbibliothek bietet Treibern der Ebene 1 die folgenden neuen Funktionen:

  • Vorwärts- und Rückwärtslauf. Treiber der Ebene 2 benötigen die Cursorbibliothek nicht, da sie bereits bildlauffähig sind.

  • Unterstützung für Momentaufnahme s. Die Cursorbibliothek verwaltet einen Puffer, der die Datensätze des Momentaufnahme enthält. Dieser Puffer spiegelt die Löschungen und Bearbeitungen ihres Programms an Datensätzen wider, jedoch nicht die Ergänzungen, Löschungen oder Bearbeitungen anderer Benutzer. Daher ist die Momentaufnahme nur so aktuell wie der Puffer der Cursorbibliothek. Der Puffer spiegelt auch ihre eigenen Ergänzungen erst wider, wenn Sie aufrufen Requery. Dynasets verwenden die Cursorbibliothek nicht.

Die Cursorbibliothek bietet Ihnen Momentaufnahme (statische Cursor) auch dann, wenn sie von Ihrem Treiber normalerweise nicht unterstützt werden. Wenn Ihr Treiber bereits statische Cursor unterstützt, müssen Sie die Cursorbibliothek nicht laden, um Momentaufnahme Unterstützung zu erhalten. Wenn Sie die Cursorbibliothek verwenden, können Sie nur Momentaufnahme und Vorwärtsrecordsets verwenden. Wenn Ihr Treiber Dynasets (KEYSET_DRIVEN Cursor) unterstützt und Sie sie verwenden möchten, dürfen Sie die Cursorbibliothek nicht verwenden. Wenn Sie sowohl Momentaufnahme als auch Dynasets verwenden möchten, müssen Sie diese auf zwei verschiedenen CDatabase Objekten (zwei verschiedene Verbindungen) basieren, es sei denn, Ihr Treiber unterstützt beide.

Positionierte Aktualisierungen und Zeitstempelspalten

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).

Hinweis

Wenn Ihr ODBC-Treiber unterstützt SQLSetPos, den MFC verwendet, falls verfügbar, gilt dieses Thema nicht für Sie.

Die meisten Treiber der Ebene 1 unterstützen keine positionierten Updates. Solche Faktoren basieren auf der Cursorbibliothek, um die Funktionen von Treibern der Ebene 2 in dieser Hinsicht zu emulieren. Die Cursorbibliothek emuliert die Unterstützung für positionierte Aktualisierungen, indem eine durchsuchte Aktualisierung für die nicht veränderten Felder ausgeführt wird.

In einigen Fällen kann ein Recordset eine Zeitstempelspalte als eines dieser nicht geänderten Felder enthalten. Bei der Verwendung von MFC-Recordsets mit Tabellen, die Zeitstempelspalten enthalten, treten zwei Probleme auf.

Das erste Problem betrifft aktualisierbare Momentaufnahme in Tabellen mit Zeitstempelspalten. Wenn die Tabelle, an die Ihre Momentaufnahme gebunden ist, eine Zeitstempelspalte enthält, sollten Sie nach dem Aufruf Requery Edit und Updateder . Wenn nicht, können Sie denselben Datensatz möglicherweise nicht erneut bearbeiten. Beim Aufrufen Edit und anschließend Updatewird der Datensatz in die Datenquelle geschrieben, und die Zeitstempelspalte wird aktualisiert. Wenn Sie nicht aufrufenRequery, entspricht der Zeitstempelwert für den Datensatz in Ihrer Momentaufnahme nicht mehr dem entsprechenden Zeitstempel für die Datenquelle. Wenn Sie versuchen, den Datensatz erneut zu aktualisieren, kann die Datenquelle das Update aufgrund der Fehlenden Übereinstimmung nicht zulassen.

Das zweite Problem betrifft Einschränkungen der Klasse CTime , wenn sie mit der RFX_Date Funktion verwendet wird, um Zeit- und Datumsinformationen in oder aus einer Tabelle zu übertragen. Die Verarbeitung des CTime Objekts führt zu einem gewissen Aufwand in Form einer zusätzlichen Zwischenverarbeitung während der Datenübertragung. Der Datumsbereich von CTime Objekten kann auch für einige Anwendungen zu begrenzt sein. Eine neue Version der RFX_Date Funktion verwendet einen ODBC-TIMESTAMP_STRUCT Parameter anstelle eines CTime Objekts. Weitere Informationen finden Sie in RFX_Date Makros und Globalen in der MFC-Referenz.

Verwenden der Cursorbibliothek

Wenn Sie eine Verbindung mit einer Datenquelle herstellen – durch Aufrufen von CDatabase::OpenEx oder CDatabase::Open – können Sie angeben, ob die Cursorbibliothek für die Datenquelle verwendet werden soll. Wenn Sie Momentaufnahme für diese Datenquelle erstellen, geben Sie die CDatabase::useCursorLib Option im dwOptions Parameter an, um OpenEx WAHR für den bUseCursorLib-Parameter anzugeben Open (der Standardwert ist TRUE). Wenn Ihr ODBC-Treiber Dynasets unterstützt und Sie Dynasets für die Datenquelle öffnen möchten, verwenden Sie nicht die Cursorbibliothek (es maskiert einige Treiberfunktionen, die für Dynasets erforderlich sind). Geben Sie CDatabase::useCursorLib in diesem Fall nicht false OpenEx für den bUseCursorLib-Parameter in Open.

Siehe auch

Grundlagen zu ODBC