Freigeben über


Funktionen des Treiber-Managers

In der folgenden Tabelle wird zusammengefasst, wie der ODBC 3.x-Treiber-Manager Aufrufe den ODBC 2.x - und ODBC 3.x-Treibern ordnet.

Funktion oder

Anweisungsattribut
Kommentare
SQL_ATTR_FETCH_BOOKMARK_PTR Verweist auf das Lesezeichen, das mit SQLFetchScroll verwendet werden soll. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung dies in einem ODBC 2.x-Treiber festlegt, speichert der ODBC 3.x-Treiber-Manager ihn zwischen. Er leitet den Zeiger ab und übergibt den Wert an den ODBC 2.x-Treiber im FetchOffset-Argument von SQLExtendedFetch , wenn SQLFetchScroll später von der Anwendung aufgerufen wird.
- Wenn eine Anwendung dies in einem ODBC 3.x-Treiber festlegt, übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber.
SQL_ATTR_ROW_STATUS_PTR Zeigt auf das Zeilenstatusarray, das von SQLFetch, SQLFetchScroll, SQLBulkOperations und SQLSetPos ausgefüllt wird. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung dies in einem ODBC 2.x-Treiber festlegt, speichert der ODBC 3.x-Treiber-Manager seinen Wert zwischen. Er übergibt diesen Wert an den ODBC 2.x-Treiber im RowStatusArray-Argument von SQLExtendedFetch , wenn SQLFetchScroll oder SQLFetch aufgerufen wird.
- Wenn eine Anwendung dies in einem ODBC 3.x-Treiber festlegt, übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber.
– Wenn eine Anwendung im Zustand S6 SQL_ATTR_ROW_STATUS_PTR festlegt und dann SQLBulkOperations (mit einem Vorgang von SQL_ADD) oder SQLSetPos aufruft, ohne zuerst SQLFetch oder SQLFetchScroll aufzurufen, wird SQLSTATE HY011 (Attribut kann jetzt nicht festgelegt werden) zurückgegeben.
SQL_ATTR_ROWS_FETCHED_PTR Zeigt auf den Puffer, in dem SQLFetch und SQLFetchScroll die Anzahl der abgerufenen Zeilen zurückgeben. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung dies in einem ODBC 2.x-Treiber festlegt, speichert der ODBC 3.x-Treiber-Manager seinen Wert zwischen. Er übergibt diesen Wert an den ODBC 2.x-Treiber im RowCountPtr-Argument von SQLExtendedFetch , wenn SQLFetch oder SQLFetchScroll von der Anwendung aufgerufen wird.
- Wenn eine Anwendung dies in einem ODBC 3.x-Treiber festlegt, übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber.
SQL_ATTR_ROW_ARRAY_SIZE Legt die Rowsetgröße fest. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung dies in einem ODBC 2.x-Treiber festlegt, ordnet der ODBC 3.x-Treiber-Manager dies dem Attribut der SQL_ROWSET_SIZE-Anweisung zu.
- Wenn eine Anwendung dies in einem ODBC 3.x-Treiber festlegt, übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber.
- Wenn eine Anwendung, die mit einem ODBC 3.x-Treiber arbeitet , SQLSetScrollOptions aufruft, wird SQL_ROWSET_SIZE auf den Wert im RowsetSize-Argument festgelegt, wenn der zugrunde liegende Treiber SQLSetScrollOptions nicht unterstützt.
SQL_ROWSET_SIZE Legt die Von SQLExtendedFetch verwendete Rowsetgröße fest, wenn SQLExtendedFetch von einer ODBC 2.x-Anwendung aufgerufen wird. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung dies festlegt, übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber, unabhängig von der Treiberversion.
- Wenn eine Anwendung, die mit einem ODBC 2.x-Treiber arbeitet , SQLSetScrollOptions aufruft, wird SQL_ROWSET_SIZE auf den Wert im RowsetSize-Argument festgelegt.
SQLBulkOperations Führt einen Einfügevorgang oder Aktualisierungs-, Lösch- oder Abrufvorgänge durch Lesezeichen aus. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung SQLBulkOperations mit einem Vorgang von SQL_ADD in einem ODBC 2.x-Treiber aufruft, ordnet der ODBC 3.x-Treiber-Manager dies SQLSetPos mit einem Vorgang von SQL_ADD zu.
– Wenn Sie mit einem ODBC 2.x-Treiber arbeiten, der SQLSetPos mit einem Vorgang von SQL_ADD nicht unterstützt, zuordnen sie SQLSetPos nicht mit einem Vorgang von SQL_ADD SQLBulkOperations mit einem Vorgang von SQL_ADD. Dies liegt daran, dass SQLBulkOperations nicht im Zustand S7 aufgerufen werden kann, der in ODBC 2.x der einzige Zustand war, in dem SQLSetPos aufgerufen werden konnte.
- Wenn die Anwendung SQLBulkOperations mit einem Vorgang von SQL_ADD in einem ODBC 2.x-Treiber aufruft, bevor SQLFetchScroll aufgerufen wird, gibt der ODBC 3.x-Treiber-Manager einen Fehler zurück.
SQLExtendedFetch Gibt das angegebene Rowset zurück. Mit Ausnahme der gerade erwähnten Einschränkung übergibt der ODBC 3.x-Treiber-Manager Aufrufe an SQLExtendedFetch an den Treiber, unabhängig von der Treiberversion.
SQLFetch Gibt das nächste Rowset zurück. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung SQLFetch in einem ODBC 2.x-Treiber aufruft , ordnet der ODBC 3.x-Treiber-Manager dies SQLExtendedFetch zu. Das FetchOrientation-Argument von SQLExtendedFetch ist auf SQL_FETCH_NEXT festgelegt. Der Treiber-Manager verwendet den zwischengespeicherten Wert des SQL_ATTR_ROW_STATUS_PTR-Anweisungsattributs für das RowStatusArray-Argument und den zwischengespeicherten Wert des SQL_ATTR_ROWS_FETCHED_PTR-Anweisungsattributs für das RowCountPtr-Argument .
– Eine ODBC 3.x-Anwendung kann Aufrufe von SQLFetch und SQLFetchScroll in einem ODBC 2.x-Treiber kombinieren, da der ODBC 3.x-Treiber-ManagerSQLFetchSQLExtendedFetch zuordnet, wenn eine Anwendung es in einem ODBC 2.x-Treiber aufruft .
– Wenn ein ODBC 2.x-TreiberSQLExtendedFetch nicht unterstützt, wird SQLFetch oder SQLFetchScroll vom ODBC 3.x-Treiber nicht zu SQLExtendedFetch zugeordnet, wenn eine Anwendung ihn in diesem Treiber aufruft. Wenn die Anwendung versucht, SQL_ATTR_ROW_ARRAY_SIZE auf einen Wert größer als 1 festzulegen, wird SQLSTATE HYC00 (Optionales Feature nicht implementiert) zurückgegeben.
– Mit Ausnahme der gerade erwähnten Einschränkungen übergibt der ODBC 3.x-Treiber-Manager Aufrufe an SQLFetch an den Treiber, unabhängig von der Treiberversion.
SQLFetchScroll Gibt das angegebene Rowset zurück. Im Folgenden finden Sie Implementierungsdetails:

- Wenn eine Anwendung SQLFetchScroll in einem ODBC 2.x-Treiber aufruft, ordnet der ODBC 3.x-Treiber-Manager dies SQLExtendedFetch zu. Es verwendet den zwischengespeicherten Wert des SQL_ATTR_ROW_STATUS_PTR-Anweisungsattributs für das RowStatusArray-Argument und den zwischengespeicherten Wert des SQL_ATTR_ROWS_FETCHED_PTR-Anweisungsattributs für das RowCountPtr-Argument . Wenn das FetchOrientation-Argument in SQLFetchScroll SQL_FETCH_BOOKMARK ist, verwendet es den zwischengespeicherten Wert des SQL_ATTR_FETCH_BOOKMARK_PTR-Anweisungsattributs für das FetchOffset-Argument und gibt einen Fehler zurück, wenn das FetchOffset-Argument von SQLFetchScroll nicht 0 ist.
- Wenn eine Anwendung dies in einem ODBC 3.x-Treiber aufruft , übergibt der ODBC 3.x-Treiber-Manager den Aufruf an den Treiber.
SQLSetPos Führt verschiedene positionierte Vorgänge aus. Der ODBC 3.x-Treiber-Manager übergibt Aufrufe an SQLSetPos an den Treiber, unabhängig von der Treiberversion.
SQLSetScrollOptions Wenn der Treiber-Manager SQLSetScrollOptions einer Anwendung zuordnet, die mit einem ODBC 3.x-Treiber arbeitet, der SQLSetScrollOptions nicht unterstützt, legt der Treiber-Manager die Option SQL_ROWSET_SIZE-Anweisung und nicht das SQL_ATTR_ROW_ARRAY_SIZE-Anweisungsattribut dem RowsetSize-Argument in SQLSetScrollOption fest. Daher kann SQLSetScrollOptions nicht von einer Anwendung verwendet werden, wenn mehrere Zeilen durch einen Aufruf von SQLFetch oder SQLFetchScroll abgerufen werden. Es kann nur verwendet werden, wenn mehrere Zeilen durch einen Aufruf von SQLExtendedFetch abgerufen werden.