Share via


Caractéristiques et types de curseurs

Une application peut spécifier les caractéristiques d’un curseur au lieu de spécifier le type de curseur (forward-only, static, keyset-driven ou dynamic). Pour ce faire, l’application sélectionne la défilement du curseur (en définissant l’attribut d’instruction SQL_ATTR_CURSOR_SCROLLABLE) et la sensibilité (en définissant l’attribut d’instruction SQL_ATTR_CURSOR_SENSITIVITY) avant d’ouvrir le curseur sur le handle d’instruction. Le pilote choisit ensuite le type de curseur qui fournit le plus efficacement les caractéristiques demandées par l’application.

Chaque fois qu’une application définit l’un des attributs d’instruction SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_SCROLLABLE, SQL_ATTR_CURSOR_SENSITIVITY ou SQL_ATTR_CURSOR_TYPE, le pilote apporte toute modification requise aux autres attributs d’instruction dans cet ensemble de quatre attributs afin que leurs valeurs restent cohérentes. Par conséquent, lorsque l’application spécifie une caractéristique de curseur, le pilote peut modifier l’attribut qui indique le type de curseur en fonction de cette sélection implicite ; lorsque l’application spécifie un type, le pilote peut modifier l’un des autres attributs afin qu’ils soient cohérents avec les caractéristiques du type sélectionné. Pour plus d’informations sur ces attributs d’instruction, consultez la description de la fonction SQLSetStmtAttr .

Une application qui définit des attributs d’instruction pour spécifier à la fois un type de curseur et des caractéristiques de curseur risque d’obtenir un curseur qui n’est pas la méthode la plus efficace disponible sur ce pilote répondant aux exigences de l’application.

Le paramètre implicite des attributs d’instruction est défini par le pilote, sauf qu’il doit suivre ces règles :

  • Les curseurs vers l’avant uniquement ne sont jamais défilants ; consultez la définition de SQL_ATTR_CURSOR_SCROLLABLE dans SQLSetStmtAttr.

  • Les curseurs non sensibles ne sont jamais pouvant être mis à jour (et leur concurrence est donc en lecture seule) ; cela est basé sur leur définition de curseurs insensibles dans la norme ISO SQL.

Par conséquent, le paramètre implicite des attributs d’instruction se produit dans les cas décrits dans le tableau suivant.

Attribut des ensembles d’applications sur Autres attributs définis implicitement
SQL_ATTR_CONCURRENCY à SQL_CONCUR_READ_ONLY SQL_ATTR_CURSOR_SENSITIVITY à SQL_INSENSITIVE.
SQL_ATTR_CONCURRENCY SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES SQL_ATTR_CURSOR_SENSITIVITY à SQL_UNSPECIFIED ou SQL_SENSITIVE, tel que défini par le pilote. Il ne peut jamais être défini sur SQL_INSENSITIVE, car les curseurs non sensibles sont toujours en lecture seule.
SQL_ATTR_CURSOR_SCROLLABLE à SQL_NONSCROLLABLE SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_FORWARD_ONLY
SQL_ATTR_CURSOR_SCROLLABLE à SQL_SCROLLABLE SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, comme spécifié par le pilote. Il n’est jamais défini sur SQL_CURSOR_FORWARD_ONLY.
SQL_ATTR_CURSOR_SENSITIVITY à SQL_INSENSITIVE SQL_ATTR_CONCURRENCY à SQL_CONCUR_READ_ONLY.

SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_STATIC.
SQL_ATTR_CURSOR_SENSITIVITY à SQL_SENSITIVE SQL_ATTR_CONCURRENCY à SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES, comme spécifié par le pilote. Il n’est jamais défini sur SQL_CONCUR_READ_ONLY.

SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, comme spécifié par le pilote.
SQL_ATTR_CURSOR_SENSITIVITY à SQL_UNSPECIFIED SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES, comme spécifié par le pilote.

SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, comme spécifié par le pilote.
SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_DYNAMIC SQL_ATTR_SCROLLABLE à SQL_SCROLLABLE.

SQL_ATTR_CURSOR_SENSITIVITY à SQL_SENSITIVE. (Mais seulement si SQL_ATTR_CONCURRENCY n’est pas égal à SQL_CONCUR_READ_ONLY. Les curseurs dynamiques pouvant être mis à jour sont toujours sensibles aux modifications apportées dans leur propre transaction.)
SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_FORWARD_ONLY SQL_ATTR_CURSOR_SCROLLABLE à SQL_NONSCROLLABLE.
SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_KEYSET_DRIVEN SQL_ATTR_SCROLLABLE à SQL_SCROLLABLE.

SQL_ATTR_SENSITIVITY à SQL_UNSPECIFIED ou SQL_SENSITIVE (selon les critères définis par le pilote, si SQL_ATTR_CONCURRENCY n’est pas SQL_CONCUR_READ_ONLY).
SQL_ATTR_CURSOR_TYPE à SQL_CURSOR_STATIC SQL_ATTR_SCROLLABLE à SQL_SCROLLABLE.

SQL_ATTR_SENSITIVITY à SQL_INSENSITIVE (si SQL_ATTR_CONCURRENCY est SQL_CONCUR_READ_ONLY).

SQL_ATTR_SENSITIVITY SQL_UNSPECIFIED ou SQL_SENSITIVE (si SQL_ATTR_CONCURRENCY n’est pas SQL_CONCUR_READ_ONLY).