Share via


Aktualisieren von Daten mit SQLBulkOperations

Anwendungen können Massenaktualisierungs-, Lösch-, Abruf- oder Einfügevorgänge für die zugrunde liegende Tabelle in der Datenquelle mit einem Aufruf von SQLBulkOperations ausführen. Das Aufrufen von SQLBulkOperations ist eine bequeme Alternative zum Erstellen und Ausführen einer SQL-Anweisung. Sie ermöglicht es einem ODBC-Treiber, positionierte Updates zu unterstützen, auch wenn die Datenquelle keine positionierten SQL-Anweisungen unterstützt. Sie ist Teil des Paradigmas, den vollständigen Datenbankzugriff über Funktionsaufrufe zu erreichen.

SQLBulkOperations wird auf dem aktuellen Rowset ausgeführt und kann nur nach einem Aufruf von SQLFetch oder SQLFetchScroll verwendet werden. Die Anwendung gibt die Zeilen an, die aktualisiert, gelöscht oder aktualisiert werden sollen, indem sie ihre Lesezeichen zwischenspeichern. Der Treiber ruft die neuen Daten ab, damit Zeilen aktualisiert werden, oder die neuen Daten, die in die zugrunde liegende Tabelle eingefügt werden sollen, aus den Rowsetpuffern.

Die von SQLBulkOperations zu verwendende Rowsetgröße wird durch einen Aufruf von SQLSetStmtAttr mit einem Attributargument von SQL_ATTR_ROW_ARRAY_SIZE festgelegt. Im Gegensatz zu SQLSetPos, das nur nach einem Aufruf von SQLFetch oder SQLFetchScroll eine neue Rowsetgröße verwendet, verwendet SQLBulkOperations die neue Rowset-Größe nach dem Aufruf von SQLSetStmtAttr.

Da die meisten Interaktionen mit relationalen Datenbanken über SQL durchgeführt werden, wird SQLBulkOperations nicht weit verbreitet. Ein Treiber kann es jedoch problemlos emulieren, indem eine UPDATE-, DELETE- oder INSERT-Anweisung erstellt und ausgeführt wird.

Um zu bestimmen, welche Vorgänge SQLBulkOperation unterstützt, ruft eine Anwendung SQLGetInfo mit dem SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 oder SQL_STATIC_CURSOR_ATTRIBUTES1 Informationsoption (abhängig vom Cursortyp) auf.

In diesem Abschnitt werden die folgenden Themen behandelt: