Comportements des curseurs
ODBC prend en charge les options ISO pour spécifier le comportement des curseurs en termes de capacité de défilement et de sensibilité. Ces comportements sont spécifiés en définissant les options SQL_ATTR_CURSOR_SCROLLABLE et SQL_ATTR_CURSOR_SENSITIVITY lors d'un appel de SQLSetStmtAttr. Le pilote ODBC SQL Server Native Client implémente ces options en demandant des curseurs côté serveur avec les caractéristiques suivantes.
Paramètres de comportement du curseur |
Caractéristiques du curseur côté serveur demandées |
---|---|
SQL_SCROLLABLE et SQL_SENSITIVE |
Curseur de jeu de clés et accès concurrentiel optimiste basé sur la version |
SQL_SCROLLABLE et SQL_INSENSITIVE |
Curseur statique et concurrence en lecture seule |
SQL_SCROLLABLE et SQL_UNSPECIFIED |
Curseur statique et concurrence en lecture seule |
SQL_NONSCROLLABLE et SQL_SENSITIVE |
Curseur avant uniquement et accès concurrentiel optimiste basé sur la version |
SQL_NONSCROLLABLE et SQL_INSENSITIVE |
Jeu de résultats par défaut (avant uniquement, en lecture seule) |
SQL_NONSCROLLABLE et SQL_UNSPECIFIED |
Jeu de résultats par défaut (avant uniquement, en lecture seule) |
L'accès concurrentiel optimiste basé sur la version requiert une colonne timestamp dans la table sous-jacente. Si le contrôle d'accès concurrentiel optimiste basé sur la version est demandé sur une table qui n'a pas de colonne timestamp, le serveur utilise l'accès concurrentiel optimiste basé sur les valeurs.
Capacité de défilement
Quand SQL_ATTR_CURSOR_SCROLLABLE a la valeur SQL_SCROLLABLE, le curseur prend en charge la totalité des différentes valeurs du paramètre FetchOrientation de SQLFetchScroll. Quand SQL_ATTR_CURSOR_SCROLLABLE a la valeur SQL_NONSCROLLABLE, le curseur prend uniquement en charge une valeur FetchOrientation de SQL_FETCH_NEXT.
Sensibilité
Quand SQL_ATTR_CURSOR_SENSITIVITY est défini avec la valeur SQL_SENSITIVE, le curseur reflète les modifications des données effectuées par l'utilisateur en cours ou validées par d'autres utilisateurs. Quand SQL_ATTR_CURSOR_SENSITIVITY est défini avec la valeur SQL_INSENSITIVE, le curseur ne reflète pas les modifications des données.