c # IDataReader SqlDataReader Unterschied

8

Kann mir jemand den Unterschied zwischen diesen beiden Teilen des Codes sagen? Warum IDataReader verwenden?

%Vor%     
Nice 26.05.2011, 10:41
quelle

2 Antworten

16

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:

%Vor%

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.

    
C.Evenhuis 26.05.2011 10:44
quelle
1

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

    
Nighil 26.05.2011 10:49
quelle

Tags und Links