Freigeben über


ODBC-Cursorbibliothek

Einige ODBC-Treiber unterstützen nur die Standardcursoreinstellungen. Diese Treiber unterstützen auch keine Vorgänge für positionierte Cursor, wie SQLSetPos. Die ODBC-Cursorbibliothek ist eine Komponente von Microsoft Data Access Components (MDAC), mit der Block- oder statische Cursor in einem Treiber implementiert werden, der sie normalerweise nicht unterstützt. Die Cursorbibliothek implementiert auch positionierte UPDATE- und DELETE-Anweisungen sowie SQLSetPos für die Cursor, die sie erstellt.

Die ODBC-Cursorbibliothek wird als Ebene zwischen dem ODBC-Treiber-Manager und einem ODBC-Treiber implementiert. Wenn die ODBC-Cursorbibliothek geladen ist, leitet der ODBC-Treiber-Manager alle cursorspezifischen Befehle an die Cursorbibliothek statt an den Treiber weiter. Die Cursorbibliothek implementiert einen Cursor durch Abrufen des gesamten Resultsets aus dem zugrunde liegenden Treiber und durch Zwischenspeichern des Resultsets auf dem Client. Bei Verwendung der ODBC-Cursorbibliothek ist die Anwendung auf die Cursorfunktionen der Cursorbibliothek beschränkt. Zusätzliche Cursorfunktionen im zugrunde liegenden Treiber sind für die Anwendung nicht verfügbar.

Es besteht kaum Bedarf, die ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber zu verwenden, da der Treiber selbst mehr Cursorfunktionen unterstützt als die ODBC-Cursorbibliothek. Der einzige Grund, die ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber zu verwenden, besteht darin, dass der Treiber seine Cursorunterstützung durch Servercursor implementiert und Servercursor nicht alle SQL-Anweisungen unterstützen. Erwägen Sie die Verwendung der ODBC-Cursorbibliothek, wenn ein statischer Cursor mit gespeicherten Prozeduren, Batches oder SLQ-Anweisungen, die COMPUTE, COMPUTE BY, FOR BROWSE oder INTO enthalten, erforderlich ist. Gehen Sie mit der Cursorbibliothek jedoch sorgfältig um, da sie das gesamte Resultset auf dem Client zwischenspeichert und dadurch viel Speicherplatz belegt und die Leistung beeinträchtigt werden kann.

Eine Anwendung ruft die Cursorbibliothek auf Einzelverbindungsbasis mit SQLSetConnectAttr auf, um das SQL_ATTR_ODBC_CURSORS-Verbindungsattribut vor dem Herstellen der Verbindung mit einer Datenquelle festzulegen. SQL_ATTR_ODBC_CURSORS wird auf einen von drei Werten festgelegt:

  • SQL_CUR_USE_ODBC
    Wenn diese Option mit dem SQL Server Native Client ODBC-Treiber festgelegt wird, überschreibt die Cursorbibliothek die systemeigene Cursorunterstützung des SQL Server Native Client ODBC-Treibers. Für die Verbindung können nur von der Cursorbibliothek unterstützte Cursortypen verwendet werden. Servercursor können nicht verwendet werden.

  • SQL_CUR_USE_DRIVER
    Wenn diese Option festgelegt ist, kann die gesamte für den SQL Server Native Client ODBC-Treiber systemeigene Unterstützung für die Verbindung verwendet werden. Die ODBC-Cursorbibliothek kann nicht verwendet werden. Alle Cursor werden als Servercursor implementiert.

  • SQL_CUR_USE_IF_NEEDED
    Wenn diese Option festgelegt ist, ist der Effekt mit SQL_CUR_USE_DRIVER bei Verwendung mit dem SQL Server Native Client ODBC-Treiber identisch. Zum Zeitpunkt des Verbindungsaufbaus testet der ODBC-Treiber-Manager, ob der ODBC-Treiber, mit dem eine Verbindung hergestellt wird, die SQL_FETCH_PRIOR-Option von SQLFetchScroll unterstützt. Wenn der Treiber die Option nicht unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek. Unterstützt der Treiber die Option, so lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht und die Anwendung verwendet die systemeigene Unterstützung des Treibers. Da der SQL Server Native Client ODBC-Treiber SQL_FETCH_PRIOR unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht.

Die Cursorbibliothek ermöglicht Anwendungen, mehrere aktive Anwendungen für eine Verbindung sowie bildlauffähige und aktualisierbare Cursor zu verwenden. Die Cursorbibliothek muss geladen sein, damit diese Funktion unterstützt wird. Verwenden Sie SQLSetConnectAttr, um anzugeben, wie die Cursorbibliothek verwendet werden soll, und SQLSetStmtAttr, um den Cursortyp, die Parallelität und die Rowsetgröße festzulegen.

Siehe auch

Konzepte

Implementieren von Cursorn