Implementieren einer DataReader-Klasse für eine Datenverarbeitungserweiterung

Mithilfe des DataReader-Objekts kann ein Client einen schreibgeschützten Vorwärtsdatenstrom von einer Datenquelle empfangen. Ergebnisse werden bei der Ausführung der Abfrage zurückgegeben und im Netzwerkpuffer auf dem Client gespeichert, bis Sie sie unter Verwendung der Read-Methode der DataReader-Klasse anfordern. Implementieren Sie IDataReader und optional IDataReaderExtension, um eine DataReader-Klasse zu erstellen. Die Verwendung eines DataReader-Objekts erhöht sowohl die Anwendungsleistung, indem Daten abgerufen werden, sobald sie verfügbar sind, anstatt darauf zu warten, dass die gesamten Ergebnisse der Abfrage zurückgegeben werden, und (standardmäßig) nur eine Zeile gleichzeitig im Arbeitsspeicher gespeichert werden, wodurch der Systemaufwand reduziert wird.

Nachdem Sie eine Instanz der Command-Klasse erstellt haben, legen Sie ein DataReader-Objekt an, indem Sie Command.ExecuteReader aufrufen, um Zeilen von der Datenquelle abzurufen. Die DataReader-Implementierung muss über zwei grundlegende Funktionen verfügen: Vorwärtszugriff auf die Resultsets, die durch die Ausführung eines Befehls abgerufen wurden, und Zugriff auf die Spaltentypen, Namen und Werte innerhalb jeder Zeile. Clients verwenden die Read-Methode des DataReader-Objekts, um eine Zeile aus den Ergebnissen der Abfrage abzurufen.

In Berichts-Designer wird Ihr DataReader-Objekt verwendet, um eine Liste von Feldern und Schemainformationen zum Resultset abzurufen. Dieser Abruf erfolgt durch Implementieren der Methoden "GetName", "GetValue", "GetFieldType " und "GetOrdinal " der IDataReader Schnittstelle.

Mit der IDataReaderExtension-Schnittstelle können Sie bestimmte Aggregationsinformationen über das Resultset angeben. Eine Beispiel-DataReader-Klassenimplementierung finden Sie unter SQL Server Reporting Services Product Samples (SQL Server Reporting Services-Produktbeispiele).