Exécution d’instructions de mise à jour et de suppression positionnées
Important
Cette fonctionnalité sera supprimée dans une version future de Windows. Évitez d’utiliser cette fonctionnalité dans le nouveau travail de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Microsoft recommande d’utiliser la fonctionnalité de curseur du pilote.
Une fois qu’une application a extrait un bloc de données avec SQLFetchScroll, elle peut mettre à jour ou supprimer les données dans le bloc. Pour exécuter une mise à jour ou une suppression positionnée, l’application :
Appelle SQLSetPos pour positionner le curseur sur la ligne à mettre à jour ou supprimer.
Construit une instruction de mise à jour ou de suppression positionnée avec la syntaxe suivante :
UPDATE table-name
SET column-identifier = {expression | NULL}
[, column-identifier = {expression | NULL}]
WHERE CURRENT OF cursor-name
DELETE FROM table-name WHERE CURRENT OF cursor-name
Le moyen le plus simple de construire la clause SET dans une instruction de mise à jour positionnée consiste à utiliser des marqueurs de paramètres pour chaque colonne à mettre à jour et à utiliser SQLBindParameter pour lier ces éléments aux mémoires tampons d’ensemble de lignes pour que la ligne soit mise à jour. Dans ce cas, le type de données C du paramètre est identique au type de données C de la mémoire tampon de l’ensemble de lignes.
Met à jour les mémoires tampons de l’ensemble de lignes pour la ligne active si elle exécute une instruction de mise à jour positionnée. Après avoir exécuté une instruction de mise à jour positionnée, la bibliothèque de curseurs copie les valeurs de chaque colonne de la ligne active dans son cache.
Attention
Si l’application ne met pas correctement à jour les mémoires tampons de l’ensemble de lignes avant d’exécuter une instruction de mise à jour positionnée, les données du cache sont incorrectes une fois l’instruction exécutée.
Exécute l’instruction de mise à jour ou de suppression positionnée à l’aide d’une instruction différente de celle associée au curseur.
Attention
La clause WHERE construite par la bibliothèque de curseurs pour identifier la ligne active peut échouer pour identifier les lignes, identifier une autre ligne ou identifier plusieurs lignes. Pour plus d’informations, consultez Construction d’instructions recherchées.
Toutes les instructions de mise à jour et de suppression positionnées nécessitent un nom de curseur. Pour spécifier le nom du curseur, une application appelle SQLSetCursorName avant l’ouverture du curseur. Pour utiliser le nom du curseur généré par le pilote, une application appelle SQLGetCursorName une fois le curseur ouvert.
Une fois la bibliothèque de curseurs exécutée une instruction de mise à jour ou de suppression positionnée, le tableau d’état, les mémoires tampons d’ensemble de lignes et le cache gérés par la bibliothèque de curseurs contiennent les valeurs indiquées dans le tableau suivant.
Instruction utilisée | Valeur dans le tableau d’état de ligne | Valeurs dans mémoires tampons d'ensemble de lignes |
Valeurs dans mémoires tampons de cache |
---|---|---|---|
Mise à jour positionnée | SQL_ROW_UPDATED | Nouvelles valeurs[1] | Nouvelles valeurs[1] |
Suppression positionnée | SQL_ROW_DELETED | Anciennes valeurs | Anciennes valeurs |
[1] L’application doit mettre à jour les valeurs dans les mémoires tampons de l’ensemble de lignes avant d’exécuter l’instruction de mise à jour positionnée ; après l’exécution de l’instruction de mise à jour positionnée, la bibliothèque de curseurs copie les valeurs dans les mémoires tampons de l’ensemble de lignes dans son cache.