SqlDataReader
implementiert die Schnittstelle IDataReader
. Das Gleiche gilt für alle anderen ADO.NET-Treiber (Oracle, MySql usw.). Sie können IDataReader
verwenden, sodass Sie, wenn Sie eines Tages die Datenbank-Engine ändern möchten, nicht alle SqlDataReader
-Referenzen neu schreiben müssen.
Dasselbe gilt für IDbConnection
, IDbCommand
, usw. Natürlich müssen Sie beim Erstellen der Verbindung angeben, welche Engine Sie verwenden, aber abgesehen davon Ich muss nie explizit definieren, welche Datenbank-Engine Sie verwenden.
Beachten Sie, dass IDataReader
nicht die Eigenschaft HasRows
hat und Sie die Methoden Create...()
verwenden müssen, um Befehle und Parameter zu erstellen:
Anstelle von:
%Vor% EDIT: Anstatt die Schnittstellen zu verwenden, möchten Sie vielleicht die abstrakte Klasse DbConnection
verwenden, von der alle ADO.NET-Provider erben. Sie bieten einige zusätzliche Funktionen wie das Abrufen von Schemainformationen und die oben erwähnte Eigenschaft HasRows
für DbDataReader
. In Ссылка finden Sie, warum die Schnittstelle nicht funktioniert Ich habe mit der abstrakten Klasse nicht Schritt gehalten.
Die IDataReader- und IDataRecord-Schnittstellen ermöglichen einer vererbenden Klasse die Implementierung einer DataReader-Klasse, die das Lesen von einem oder mehreren Vorwärtsströmen von Ergebnismengen ermöglicht Weitere Details finden Sie in
Tags und Links c# sqldatareader idatareader