DataReader represents the results of a database query.
You get a DataReader by calling a Command object's ExecuteReader() method.
Verify whether a DataReader has any rows by checking the HasRows property or calling the Read() method.
The DataReader represents a single row of data at a time.
To get the next row of data, you need to call the Read() method.
When you get to the last row, the Read() method returns False.