SqlDataReader
实现接口IDataReader
。所有其他 ADO.NET 驱动程序(Oracle、MySql 等)也是如此。您可以使用IDataReader
, 这样如果您计划某天更改数据库引擎,则不必重写所有SqlDataReader
引用。
IDbConnection
,等也是如此IDbCommand
。当然,在创建连接时,您需要指定您正在使用的引擎,但除此之外,您永远不必明确定义您正在使用的数据库引擎。
请注意,IDataReader
不具有该HasRows
属性,并且您必须使用Create...()
创建命令和参数的方法:
IDbCommand command = myDbConnection.CreateCommand();
代替:
SqlCommand command = new SqlCommand(myDbConnection);
编辑:您可能希望使用DbConnection
所有 ADO.NET 提供程序继承自的抽象类,而不是使用接口。它们提供了一些额外的功能,例如获取模式信息,以及前面提到HasRows
的DbDataReader
. 请参阅http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/759fa77b-8269-4c4a-be90-3c2bdce61d92/了解接口没有跟上抽象类的原因。