Partage via


Mise à jour de données avec SQLBulkOperations

Les applications peuvent effectuer des opérations de mise à jour, de suppression, d’extraction ou d’insertion en bloc sur la table sous-jacente à la source de données avec un appel à SQLBulkOperations. L’appel de SQLBulkOperations est une alternative pratique à la construction et à l’exécution d’une instruction SQL. Il permet à un pilote ODBC de prendre en charge les mises à jour positionnées même si la source de données ne prend pas en charge les instructions SQL positionnées. Il fait partie du paradigme de l’obtention d’un accès complet à la base de données par le biais d’appels de fonction.

SQLBulkOperations fonctionne sur l’ensemble de lignes actuel et peut être utilisé uniquement après un appel à SQLFetch ou SQLFetchScroll. L’application spécifie les lignes à mettre à jour, supprimer ou actualiser en mettant en cache leurs signets. Le pilote récupère les nouvelles données des lignes à mettre à jour, ou les nouvelles données à insérer dans la table sous-jacente, à partir des mémoires tampons de l’ensemble de lignes.

La taille de l’ensemble de lignes à utiliser par SQLBulkOperations est définie par un appel à SQLSetStmtAttr avec un argument Attribute de SQL_ATTR_ROW_ARRAY_SIZE. Contrairement à SQLSetPos, qui utilise une nouvelle taille d’ensemble de lignes uniquement après un appel à SQLFetch ou SQLFetchScroll, SQLBulkOperations utilise la nouvelle taille d’ensemble de lignes après l’appel à SQLSetStmtAttr.

Étant donné que la plupart des interactions avec les bases de données relationnelles sont effectuées via SQL, SQLBulkOperations n’est pas largement pris en charge. Toutefois, un pilote peut facilement l’émuler en construisant et en exécutant une instruction UPDATE, DELETE ou INSERT .

Pour déterminer quelles opérations SQLBulkOperation prend en charge, une application appelle SQLGetInfo avec l’option SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 ou SQL_STATIC_CURSOR_ATTRIBUTES1 d’informations (selon le type du curseur).

Cette section contient les rubriques suivantes :