Abrufen von Zeilen mit SQLBulkOperations

Daten können mithilfe von Textmarken durch einen Aufruf von SQLBulkOperations in ein Rowset refetched werden. Die abzurufenden Zeilen werden durch die Textmarken in einer gebundenen Textmarkenspalte identifiziert. Spalten mit einem Wert von SQL_COLUMN_IGNORE werden nicht abgerufen.

Zum Ausführen von Massenabrufen mit SQLBulkOperations führt die Anwendung die folgenden Aktionen aus:

  1. Ruft die Lesezeichen aller zu aktualisierenden Zeilen ab und speichert sie zwischen. Wenn mehr als eine Textmarke und spaltenweise Bindung verwendet wird, werden die Lesezeichen in einem Array gespeichert. Wenn mehr als eine Textmarke und zeilenweise Bindung verwendet wird, werden die Lesezeichen in einem Array von Zeilenstrukturen gespeichert.

  2. Legt das attribut der SQL_ATTR_ROW_ARRAY_SIZE-Anweisung auf die Anzahl der Zeilen fest, um den Puffer abzurufen und zu binden, der den Textmarkenwert oder das Array von Textmarken enthält, an Spalte 0.

  3. Legt den Wert im Längen-/Indikatorpuffer jeder Spalte bei Bedarf fest. Dies ist die Bytelänge der Daten oder SQL_NTS für Spalten, die an Zeichenfolgenpuffer gebunden sind, die Bytelänge der Daten für Spalten, die an binäre Puffer gebunden sind, und SQL_NULL_DATA, damit alle Spalten auf NULL festgelegt werden. Die Anwendung legt den Wert im Längen-/Indikatorpuffer dieser Spalten fest, die auf deren Standard (sofern vorhanden) oder NULL (falls vorhanden) auf SQL_COLUMN_IGNORE festgelegt werden sollen.

  4. Ruft SQLBulkOperations auf, wobei das Argument Operation auf SQL_FETCH_BY_BOOKMARK festgelegt ist.

Es ist nicht erforderlich, dass die Anwendung das Zeilenvorgangsarray verwendet, um zu verhindern, dass der Vorgang für bestimmte Spalten ausgeführt wird. Die Anwendung wählt die Zeilen aus, die sie abrufen möchte, indem nur die Lesezeichen für diese Zeilen in das gebundene Lesezeichenarray kopiert werden.