Implementieren einer DataReader-Klasse für Datenverarbeitungserweiterungen

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. Um eine DataReader-Klasse zu erstellen, implementieren Sie IDataReader und implementieren IDataReaderExtension optional. Die Verwendung eines DataReader-Objekts erhöht die Anwendungsleistung, da die Daten sofort bei Verfügbarkeit abgerufen werden (statt auf die gesamten Ergebnisse der Abfrage zu warten) und da (standardmäßig) immer nur eine Zeile im Speicher gespeichert wird. So wird der Systemverwaltungsaufwand reduziert.

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.

Im Berichts-Designer werden mithilfe des DataReader-Objekts eine Liste der Felder sowie Schemainformationen zur Ergebnisreihe abgerufen. Hierzu müssen die Methoden GetName, GetValue, GetFieldType und GetOrdinal der IDataReader-Schnittstelle implementiert werden.

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 (in Englisch).