title: Difference between SqlDataReader, DataTable and DataSet and their uses
body: <p>I was going through an article related to SQL Server data access and came across three methods:</p>
  
  <pre><code>public SqlDataReader ExecuteReader(string procedureName, IDictionary&lt;string, IConvertible&gt; parameters = null) 
  
  public DataTable ExecuteDataTable(string procedureName, IDictionary&lt;string, IConvertible&gt; parameters = null)  
  
  public DataSet ExecuteDataSet(string procedureName, IDictionary&lt;string, IConvertible&gt; parameters = null)  
  </code></pre>
  
  <p>These were the methods written in abstract <code>DataAccessBase</code> class. </p>
  
  <p>Can someone please explain me, what is the need of returning <code>SqlDataReader</code>, <code>DataTable</code> and <code>DataSet</code>? Which scenarios we will be using those?</p>