Share via


Blockcursor

Viele Anwendungen verbringen viel Zeit damit, Daten über das Netzwerk hinweg zu bringen. Ein Teil dieser Zeit wird tatsächlich damit verbracht, die Daten über das Netzwerk hinweg zu bringen, und ein Teil davon wird für den Netzwerkaufwand aufgewendet, z. B. der Vom Treiber getätigte Anruf, um eine Datenzeile anzufordern. Letztere Zeit kann reduziert werden, wenn die Anwendung block- oder fett,Cursor effizient verwendet, die mehrere Zeilen gleichzeitig zurückgeben können.

Eine Anwendung hat immer die Möglichkeit, einen Blockcursor zu verwenden. In Datenquellen, aus denen jeweils nur eine Zeile abgerufen werden kann, müssen Blockcursor im Treiber simuliert werden. Dies kann durch Ausführen mehrerer Einzeilenabrufe erfolgen. Obwohl dies unwahrscheinlich ist, dass sie Leistungsgewinne bietet, eröffnet sie Möglichkeiten für Anwendungen. Solche Anwendungen werden dann leistungssteigerungen auftreten, da DBMSs Blockcursor nativ implementieren und die Treiber, die diesen DBMSs zugeordnet sind, verfügbar machen.

Die zeilen, die in einem einzelnen Abruf mit einem Blockcursor zurückgegeben werden, werden als Rowset bezeichnet. Es ist wichtig, das Rowset nicht mit dem Resultset zu verwechseln. Das Resultset wird an der Datenquelle Standard tained, während das Rowset in Anwendungspuffern Standard. Während das Resultset behoben ist, ändert das Rowset nicht die Position und den Inhalt jedes Mal, wenn eine neue Gruppe von Zeilen abgerufen wird. Ebenso wie ein einzeiliger Cursor wie der herkömmliche SQL-Vorwärtscursor zeigt auf eine aktuelle Zeile, zeigt ein Blockcursor auf das Rowset, das als aktuelle Zeilen betrachtet werden kann.

Um Vorgänge auszuführen, die für eine einzelne Zeile ausgeführt werden, wenn mehrere Zeilen abgerufen wurden, muss die Anwendung zuerst angeben, welche Zeile die aktuelle Zeile ist. Die aktuelle Zeile wird durch Aufrufe von SQLGetData und positionierten Aktualisierungs- und Löschanweisungen benötigt. Wenn ein Blockcursor zuerst ein Rowset zurückgibt, ist die aktuelle Zeile die erste Zeile des Rowsets. Um die aktuelle Zeile zu ändern, ruft die Anwendung SQLSetPos oder SQLBulkOperations auf (zum Aktualisieren durch Textmarke). Die folgende Abbildung zeigt die Beziehung des Resultsets, des Rowsets, der aktuellen Zeile, des Zeilenzeigers und des Blockcursors. Weitere Informationen finden Sie unter Verwenden von Blockcursors weiter unten in diesem Abschnitt sowie positionierte Aktualisierungs- und Löschanweisungen und Aktualisieren von Daten mit SQLSetPos.

Fetching Next, Prior, First, and Last Rowsets

Gibt an, ob ein Cursor ein Blockcursor ist, unabhängig davon, ob er scrollbar ist. Beispielsweise wird der Großteil der Arbeit in einer Berichtsanwendung zum Abrufen und Drucken von Zeilen aufgewendet. Aus diesem Gründen funktioniert es am schnellsten mit einem Vorwärts-, Blockcursor. Er verwendet einen Vorwärtscursor, um die Kosten eines bildlauffähigen Cursors und einen Blockcursor zu vermeiden, um den Netzwerkdatenverkehr zu reduzieren.

In diesem Abschnitt werden die folgenden Themen behandelt: