October 12, 2002 - The SqlDataReader Class | WebReference

October 12, 2002 - The SqlDataReader Class

Yehuda Shiran October 12, 2002
The SqlDataReader Class
Tips: October 2002

Yehuda Shiran, Ph.D.
Doc JavaScript

The IBuySpy Store uses the SqlDataReader class extensively. In fact, all records are retrieved from the database via this class. Use the SqlDataReader class to read a stream of rows from an SQL Server database. This class cannot be inherited.

To create an SqlDataReader instance object, you need to call the ExecuteReader() method of the SqlCommand class, rather than directly using a constructor.

Reading records from the database is asynchronous. This means that if you don't wait for the last record to be read and try to access one of the records, the results are not guaranteed to be valid. In order to avoid accessing records before they are read in, you need to close the reading channel. You can close the connection by sending the constant CommandBehavior.CloseConnection to the ExecuteReader() method of the SqlCommand class. Here is an example that shows how the myCommand instance object of the SqlCommand class closes the connection:

  var result : SqlDataReader  = 
    myCommand.ExecuteReader(CommandBehavior.CloseConnection);
The following method shows a complete interaction with the IBuySpy Store database:

  public function GetProductCategories() : SqlDataReader {
    var myConnection : SqlConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    var myCommand : SqlCommand = new SqlCommand("ProductCategoryList", myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;
    myConnection.Open();
    var result : SqlDataReader  = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    return result;
  }