SqlDataReader
implementa la interfaz IDataReader
. Lo mismo ocurre con todos los demás controladores ADO.NET (Oracle, MySql, etc.). Puede usar IDataReader
, de modo que si planea cambiar el motor de la base de datos algún día, no tiene que volver a escribir todas sus referencias SqlDataReader
.
Lo mismo ocurre con IDbConnection
, IDbCommand
, etc. Por supuesto, cuando crear la conexión, necesitará especificar qué motor que está utilizando, pero aparte de que nunca tendrá que definir explícitamente qué base de datos motor que estás usando
Tenga en cuenta que IDataReader
no tiene la propiedad HasRows
, y usted tiene que utilizar los métodos Create...()
para crear Comandos y parámetros:
IDbCommand command = myDbConnection.CreateCommand();
En lugar de:
SqlCommand command = new SqlCommand(myDbConnection);
EDIT: En lugar de utilizar En las interfaces, es posible que desee utilizar la clase abstracta DbConnection
heredada de todos los proveedores de ADO.NET. Proporcionan algunas características adicionales, como la obtención de información de esquema, y la propiedad HasRows
antes mencionada para el DbDataReader
. Consulte http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/759fa77b-8269-4c4a-be90-3c2bdce61d92/ para saber por qué la interfaz no se ha mantenido con la clase abstracta.
Gran respuesta, que me golpearon a él :) – mdm