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). |
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour