Share via


Ce que fait le gestionnaire de pilotes

Le tableau suivant résume la façon dont le Gestionnaire de pilotes ODBC 3.x mappe les appels aux pilotes ODBC 2.x et ODBC 3.x .

Fonction ou

attribut d'instruction
Commentaires
SQL_ATTR_FETCH_BOOKMARK_PTR Pointe vers le signet à utiliser avec SQLFetchScroll. Voici les détails de l’implémentation :

- Lorsqu’une application définit ce paramètre dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x le met en cache. Il déréférence le pointeur et transmet la valeur au pilote ODBC 2.x dans l’argument FetchOffset de SQLExtendedFetch lorsque SQLFetchScroll est appelé ultérieurement par l’application.
- Lorsqu’une application définit cette valeur dans un pilote ODBC 3.x , le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote.
SQL_ATTR_ROW_STATUS_PTR Pointe vers le tableau d’état de ligne rempli par SQLFetch, SQLFetchScroll, SQLBulkOperations et SQLSetPos. Voici les détails de l’implémentation :

- Lorsqu’une application définit cette valeur dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x met en cache sa valeur. Elle transmet cette valeur au pilote ODBC 2.x dans l’argument RowStatusArray de SQLExtendedFetch lorsque SQLFetchScroll ou SQLFetch est appelé.
- Lorsqu’une application définit cette valeur dans un pilote ODBC 3.x , le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote.
- Dans l’état S6, si une application définit SQL_ATTR_ROW_STATUS_PTR, puis appelle SQLBulkOperations (avec une opération de SQL_ADD) ou SQLSetPos sans appeler d’abord SQLFetch ou SQLFetchScroll, SQLSTATE HY011 (l’attribut ne peut pas être défini maintenant) est retourné.
SQL_ATTR_ROWS_FETCHED_PTR Pointe vers la mémoire tampon dans laquelle SQLFetch et SQLFetchScroll retournent le nombre de lignes extraites. Voici les détails de l’implémentation :

- Lorsqu’une application définit cette valeur dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x met en cache sa valeur. Elle transmet cette valeur au pilote ODBC 2.x dans l’argument RowCountPtr de SQLExtendedFetch lorsque SQLFetch ou SQLFetchScroll est appelé par l’application.
- Lorsqu’une application définit cette valeur dans un pilote ODBC 3.x , le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote.
SQL_ATTR_ROW_ARRAY_SIZE Définit la taille de l’ensemble de lignes. Voici les détails de l’implémentation :

- Lorsqu’une application le définit dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x le mappe à l’attribut d’instruction SQL_ROWSET_SIZE.
- Lorsqu’une application définit cette valeur dans un pilote ODBC 3.x , le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote.
- Lorsqu’une application fonctionnant avec un pilote ODBC 3.x appelle SQLSetScrollOptions, SQL_ROWSET_SIZE est défini sur la valeur dans l’argument RowsetSize si le pilote sous-jacent ne prend pas en charge SQLSetScrollOptions.
SQL_ROWSET_SIZE Définit la taille de l’ensemble de lignes utilisée par SQLExtendedFetch lorsque SQLExtendedFetch est appelé par une application ODBC 2.x . Voici les détails de l’implémentation :

- Lorsqu’une application définit ce paramètre, le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote, quelle que soit la version du pilote.
- Lorsqu’une application fonctionnant avec un pilote ODBC 2.x appelle SQLSetScrollOptions, SQL_ROWSET_SIZE est défini sur la valeur dans l’argument RowsetSize .
SQLBulkOperations Effectue une opération d’insertion ou de mise à jour, de suppression ou d’extraction par signet. Voici les détails de l’implémentation :

- Lorsqu’une application appelle SQLBulkOperations avec une opération de SQL_ADD dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x la mappe à SQLSetPos avec une opération de SQL_ADD.
- Lors de l’utilisation d’un pilote ODBC 2.x qui ne prend pas en charge SQLSetPos avec une opération de SQL_ADD, le Gestionnaire de pilotes ODBC 3.x ne mappe pas SQLSetPos avec une opération de SQL_ADD à SQLBulkOperations avec une opération de SQL_ADD. En effet, SQLBulkOperations ne peut pas être appelé dans l’état S7, qui, dans ODBC 2.x , était le seul état dans lequel SQLSetPos pouvait être appelé.
- Si l’application appelle SQLBulkOperations avec une opération de SQL_ADD dans un pilote ODBC 2.x avant d’appeler SQLFetchScroll, le Gestionnaire de pilotes ODBC 3.x retourne une erreur.
SQLExtendedFetch Retourne l’ensemble de lignes spécifié. À l’exception de la restriction que vous venez de noter, le Gestionnaire de pilotes ODBC 3.x transmet les appels à SQLExtendedFetch au pilote, quelle que soit la version du pilote.
SQLFetch Retourne l’ensemble de lignes suivant. Voici les détails de l’implémentation :

- Lorsqu’une application appelle SQLFetch dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x le mappe à SQLExtendedFetch. L’argument FetchOrientation de SQLExtendedFetch est défini sur SQL_FETCH_NEXT. Le Gestionnaire de pilotes utilise la valeur mise en cache de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR pour l’argument RowStatusArray et la valeur mise en cache de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR pour l’argument RowCountPtr .
- Une application ODBC 3.x peut combiner des appels à SQLFetch et SQLFetchScroll dans un pilote ODBC 2.x , car le Gestionnaire de pilotes ODBC 3.x mappe SQLFetch à SQLExtendedFetch lorsqu’une application l’appelle dans un pilote ODBC 2.x .
- Si un pilote ODBC 2.x ne prend pas en charge SQLExtendedFetch, le Gestionnaire de pilotes ODBC 3.x ne mappe pas SQLFetch ou SQLFetchScroll à SQLExtendedFetch lorsqu’une application l’appelle dans ce pilote. Si l’application tente de définir SQL_ATTR_ROW_ARRAY_SIZE sur une valeur supérieure à 1, SQLSTATE HYC00 (fonctionnalité facultative non implémentée) est retourné.
- À l’exception des restrictions que vous venez de noter, le Gestionnaire de pilotes ODBC 3.x transmet les appels à SQLFetch au pilote, quelle que soit la version du pilote.
SQLFetchScroll Retourne l’ensemble de lignes spécifié. Voici les détails de l’implémentation :

- Lorsqu’une application appelle SQLFetchScroll dans un pilote ODBC 2.x , le Gestionnaire de pilotes ODBC 3.x le mappe à SQLExtendedFetch. Il utilise la valeur mise en cache de l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR pour l’argument RowStatusArray et la valeur mise en cache de l’attribut d’instruction SQL_ATTR_ROWS_FETCHED_PTR pour l’argument RowCountPtr . Si l’argument FetchOrientation dans SQLFetchScroll est SQL_FETCH_BOOKMARK, il utilise la valeur mise en cache de l’attribut d’instruction SQL_ATTR_FETCH_BOOKMARK_PTR pour l’argument FetchOffset et retourne une erreur si l’argument FetchOffset de SQLFetchScroll n’est pas 0.
- Lorsqu’une application l’appelle dans un pilote ODBC 3.x , le Gestionnaire de pilotes ODBC 3.x transmet l’appel au pilote.
SQLSetPos Effectue différentes opérations positionnées. Le Gestionnaire de pilotes ODBC 3.x transmet les appels à SQLSetPos au pilote, quelle que soit la version du pilote.
SQLSetScrollOptions Lorsque le Gestionnaire de pilotes mappe SQLSetScrollOptions pour une application fonctionnant avec un pilote ODBC 3.x qui ne prend pas en charge SQLSetScrollOptions, le Gestionnaire de pilotes définit l’option d’instruction SQL_ROWSET_SIZE, et non l’attribut d’instruction SQL_ATTR_ROW_ARRAY_SIZE, sur l’argument RowsetScrollOption dans SQLSetScrollOption. Par conséquent, SQLSetScrollOptions ne peut pas être utilisé par une application lors de l’extraction de plusieurs lignes par un appel à SQLFetch ou SQLFetchScroll. Il peut être utilisé uniquement lors de l’extraction de plusieurs lignes par un appel à SQLExtendedFetch.