Bibliothèque de curseurs ODBC

Certains pilotes ODBC prennent uniquement en charge les paramètres de curseur par défaut ; ces pilotes ne prennent pas non plus en charge les opérations de curseur positionnées, telles que SQLSetPos. La bibliothèque de curseurs ODBC est un composant de MDAC (Microsoft Data Access Components) qui permet d'implémenter des curseurs de bloc ou statiques sur un pilote qui ne les prend normalement pas en charge. La bibliothèque de curseurs implémente également des instructions UPDATE et DELETE et des fonctions SQLSetPos positionnées pour les curseurs qu'elle crée.

La bibliothèque de curseurs ODBC est implémentée comme une couche entre le gestionnaire de pilotes ODBC et un pilote ODBC. Si la bibliothèque de curseurs ODBC est chargée, le Gestionnaire de pilote ODBC route toutes les commandes connexes à curseur à la bibliothèque de curseurs au lieu du pilote. La bibliothèque de curseurs implémente un curseur en extrayant l'intégralité du jeu de résultats du pilote sous-jacent et en mettant en cache le jeu de résultats sur le client. Lors de l'utilisation de la bibliothèque de curseurs ODBC, l'application est limitée aux fonctionnalités de curseur de la bibliothèque de curseurs ; toute prise en charge à des fonctionnalités de curseur suppléméntaires dans le pilote sous-jacent n'est pas accessible à l'application.

L'utilisation de la bibliothèque de curseurs ODBC conjointement au pilote ODBC de SQL Server Native Client présente peu d'intérêt car le pilote prend en charge plus de fonctionnalités de curseur que la bibliothèque de curseurs ODBC. La seule raison justifiant l'utilisation de la bibliothèque de curseurs ODBC conjointement au pilote ODBC de SQL Server Native Client est le fait que le pilote implémente sa prise en charge des curseurs à travers des curseurs côté serveur, et que les curseurs côté serveur ne prennent pas en charge toutes les instructions SQL. Chaque fois qu'il est nécessaire d'avoir un curseur statique avec des procédures stockées, des lots ou des instructions SQL contenant COMPUTE, COMPUTE BY, FOR BROWSE ou INTO, songez à utiliser la bibliothèque de curseurs ODBC. Toutefois, utilisez-la avec précaution car elle met en cache l'intégralité du jeu de résultats sur le client, ce qui peut consommer de grandes quantités de mémoire et ralentir les performances.

Une application appelle la bibliothèque de curseurs en fonction de chaque connexion en utilisant SQLGetConnectAttr pour définir l'attribut de connexion SQL_ATTR_ODBC_CURSORS avant de se connecter à une source de données. SQL_ATTR_ODBC_CURSORS prend l'une des trois valeurs suivantes :

  • SQL_CUR_USE_ODBC
    Lorsque cette option est définie avec le pilote ODBC de SQL Server Native Client, la bibliothèque de curseurs ODBC remplace la prise en charge des curseurs native du pilote ODBC de SQL Server Native Client. Seuls les types de curseurs pris en charge par la bibliothèque de curseurs peuvent être utilisés pour la connexion ; les curseurs côté serveur ne peuvent pas être utilisés.

  • SQL_CUR_USE_DRIVER
    Lorsque cette option est définie, la prise en charge des curseurs native du pilote ODBC de SQL Server Native Client peut être utilisée pour la connexion. La bibliothèque de curseurs ODBC ne peut pas être utilisée. Tous les curseurs sont implémentés en tant que curseurs côté serveur.

  • SQL_CUR_USE_IF_NEEDED
    Lorsque cette option est définie, le résultat est le même qu'avec SQL_CUR_USE_DRIVER utilisé avec le pilote ODBC de SQL Server Native Client. Au moment de la connexion, le gestionnaire de pilotes ODBC réalise un test pour savoir si le pilote ODBC auquel la connexion est établie prend en charge l'option SQL_FETCH_PRIOR de SQLFetchScroll. Si le pilote ne prend pas en charge l'option, le gestionnaire de pilotes ODBC charge la bibliothèque de curseurs ODBC. Si le pilote prend en charge l'option, le gestionnaire de pilotes ODBC ne charge pas la bibliothèque de curseurs ODBC et l'application utilise la prise en charge native du pilote. Le pilote ODBC de SQL Server Native Client prenant en charge SQL_FETCH_PRIOR, le gestionnaire de pilotes ODBC ne charge pas la bibliothèque de curseurs ODBC.

La bibliothèque de curseurs permet aux applications d'utiliser plusieurs instructions actives sur une connexion, ainsi que des curseurs déroulants pouvant être mis à jour. La bibliothèque de curseurs doit être chargée pour prendre en charge cette fonctionnalité. Utilisez SQLSetConnectAttr pour spécifier comment la bibliothèque de curseurs doit être utilisée et SQLSetStmtAttr pour spécifier le type de curseur, la concurrence et la taille de l'ensemble de lignes.