SqlDataReader
implémente l'interface IDataReader
. Donc, tous les autres pilotes ADO.NET (Oracle, MySql, etc). Vous pouvez utiliser IDataReader
, de sorte que si vous prévoyez de changer de moteur de base de données un jour, vous n'avez pas besoin de réécrire toutes vos références SqlDataReader
.
va de même pour IDbConnection
, IDbCommand
, etc. Bien sûr, lorsque la création la connexion, vous devrez spécifier quel moteur que vous utilisez, mais à part cela, vous ne devez définir explicitement base de données moteur que vous utilisez.
Notez que IDataReader
ne possède pas la propriété HasRows
, et vous devez utiliser les méthodes Create...()
pour créer des commandes et paramètres:
IDbCommand command = myDbConnection.CreateCommand();
Au lieu de:
SqlCommand command = new SqlCommand(myDbConnection);
EDIT: Au lieu d'utiliser les interfaces dont vous souhaitez utiliser la classe abstraite DbConnection
héritent de tous les fournisseurs ADO.NET. Ils fournissent des fonctionnalités supplémentaires telles que l'obtention d'informations de schéma et la propriété HasRows
susmentionnée pour le DbDataReader
. Voir http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/759fa77b-8269-4c4a-be90-3c2bdce61d92/ pour la raison pour laquelle l'interface n'a pas suivi la classe abstraite.
Grande réponse, vous me devança :) – mdm