Freigeben über


ODBC-Cursorbibliothek

Einige ODBC-Treiber unterstützen nur die Standardcursoreinstellungen; Diese Treiber unterstützen auch keine positionierten Cursorvorgänge, z. B. SQLSetPos. Die ODBC-Cursorbibliothek ist eine Komponente der Microsoft Data Access Components (MDAC), die zum Implementieren von Block- oder statischen Cursorn auf einem Treiber verwendet wird, der sie normalerweise nicht unterstützt. Die Cursorbibliothek implementiert außerdem positionierte UPDATE- und DELETE-Anweisungen und SQLSetPos für die von ihr erstellten Cursor.

Die ODBC-Cursorbibliothek wird als Ebene zwischen dem ODBC-Treiber-Manager und einem ODBC-Treiber implementiert. Wenn die ODBC-Cursorbibliothek geladen wird, leitet der ODBC-Treiber-Manager alle cursorbezogenen Befehle an die Cursorbibliothek statt an den Treiber weiter. Die Cursorbibliothek implementiert einen Cursor, indem das gesamte Resultset aus dem zugrunde liegenden Treiber abgerufen und das Resultset auf dem Client zwischengespeichert wird. Bei Verwendung der ODBC-Cursorbibliothek ist die Anwendung auf die Cursorfunktionalität der Cursorbibliothek beschränkt; Jegliche Unterstützung für zusätzliche Cursorfunktionen im zugrunde liegenden Treiber ist für die Anwendung nicht verfügbar.

Es ist wenig erforderlich, 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 für die Verwendung der ODBC-Cursorbibliothek mit dem SQL Server Native Client ODBC-Treiber besteht darin, dass der Treiber seine Cursorunterstützung über Servercursor implementiert, und Servercursor unterstützen nicht alle SQL-Anweisungen. Jedes Mal, wenn ein statischer Cursor mit gespeicherten Prozeduren, Batches oder SQL-Anweisungen vorhanden sein muss, die COMPUTE, COMPUTE BY, FOR BROWSE oder INTO enthalten, erwägen Sie die Verwendung der ODBC-Cursorbibliothek. Die Cursorbibliothek muss jedoch mit der Cursorbibliothek verwendet werden, da sie den gesamten Resultset auf dem Client zwischenspeichert, der große Speichermengen und langsame Leistung verwenden kann.

Eine Anwendung ruft die Cursorbibliothek auf Verbindungsbasis mithilfe von SQLSetConnectAttr auf, um das SQL_ATTR_ODBC_CURSORS Verbindungsattribut festzulegen, bevor eine Verbindung mit einer Datenquelle hergestellt wird. 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 ODBC-Cursorbibliothek die systemeigene Unterstützung des SQL Server Native Client ODBC-Treibers. Nur die Cursortypen, die von der Cursorbibliothek unterstützt werden, können für die Verbindung verwendet werden; Servercursor können nicht verwendet werden.

SQL_CUR_USE_DRIVER
Wenn diese Option festgelegt ist, kann der gesamte Cursor native Unterstützung für den SQL Server Native Client ODBC-Treiber 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, entspricht der Effekt SQL_CUR_USE_DRIVER bei Verwendung mit dem ODBC-Treiber von SQL Server Native Client. Zur Verbindungszeit testet der ODBC-Treiber-Manager, ob der ODBC-Treiber, der mit der Verbindung verbunden ist, 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. Wenn der Treiber die Option unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht, und die Anwendung verwendet die systemeigene Unterstützung des Treibers. Da der ODBC-Treiber von SQL Server Native Client SQL_FETCH_PRIOR unterstützt, lädt der ODBC-Treiber-Manager die ODBC-Cursorbibliothek nicht.

Mit der Cursorbibliothek können Anwendungen mehrere aktive Anweisungen für eine Verbindung sowie bildlauffähige, aktualisierbare Cursor verwenden. Die Cursorbibliothek muss geladen werden, um diese Funktionalität zu unterstützen. Verwenden Sie SQLSetConnectAttr , um anzugeben, wie die Cursorbibliothek verwendet werden soll, und SQLSetStmtAttr , um den Cursortyp, die Parallelität und die Zeilensatzgröße anzugeben.

Siehe auch

Implementierung von Cursorn