Hi All,
I'm thinking in this line of code
IDataReader myReader = questDatabase.ExecuteReader(getQuest);
I'm using DAAB but I can't understand how and what's the meaning of the fact the method ExecuteReader(DbCommand) returns an IDataReader Interface.
Anyone can Explain, Please
It returns an object that implements this particular interface, and that's all you really care about. The object is a
IDataReader
, and can perform all the methodsIDataReader
has."Returns an interface" really means:
In this case, it returns an object very similar to a
SqlDataReader
object, that lets you to execute methods likeRead()
and implements theIDisposable
andIDataRecord
interfaces.It allows you to you DataReader without the need of knowing which type of DataReader you are using (i.e.
SqlDataReader, OleDbDataReader, EtcDataReader
), so if someday you want to change the datareader you are using it won't impact you logic, in other words it gives you abstraction. For example :you can use
without knowing which provider you are using
it can be:
or it can be
or whatever.
EDIT:
You can also use the DBFactories.
and then create your provider in other layer
The method will return an object, which is an instance of a class, and that type of class will support
IDataReader
.The point is, the type of the object isn't important, just the fact that the class implements the interface.
If you're driving a car, you don't need to know if it's a ford, or a toyota, you drive the car the same way.
The driving interface is the same, once the car supports the interface, you can drive it.
Ditto with the
IDataReader
, once the class that is returned supports the interface, you can use it.It's not returning an Interface per se, but instead an object that supports that interface.
It returns an interface because the implementation of the interface isn't important, just the API that the interface provides.