Improving the StudentDataAccess Class for ASP.NET 2.0 - Creating the GetAllStudents() method
(Page 3 of 5 )
As we have agreed, this method returns an object of type StudentDataAccessCollection so let's see how we can do that. The following is the code for this method.
public static StudentDataAccessCollection GetAllStudents(){
try{
using (SqlConnection connection = new SqlConnection(connString)){
SqlCommand command = new SqlCommand("GetAllStudentsIDs", connection);
command.CommandType = CommandType.StoredProcedure;
StudentDataAccessCollection students = new StudentDataAccessCollection();
connection.Open();
using (SqlDataReader reader = command.ExecuteReader()){
while (reader.Read()){
students.Add(new StudentDataAccess(reader.GetInt32(0)));
}
}
return students;
}
}
catch (Exception ex){
throw new ApplicationException("An error has occurred.");
}
}
The method uses a SqlConnection and a SqlCommand object to execute the stored procedure named GetAllStudentsIDs, which returns only the StudentID column from the database. Note that we are not retrieving all the columns; we use the returned StudentID column's values to create the StudentDataAccess objects. As you know, the StudentDataAccess constructor accepts the studentId and communicates with the database in order to populate its fields with the values returned from the database. We accomplish this by using the following code:
while (reader.Read()){
students.Add(new StudentDataAccess(reader.GetInt32(0)));
}
We simply use the SqlDataReader.Read() method to read the StudentID column's values from the Students table, and use these values as arguments to the StudentDataAccess constructor's parameter to create the StudentDataAccess objects. Those objects are added to the StudentDataAccess collection object using the Add() method as shown above. After that we return that collection object to the caller.
Note that the SqlDataReader.Read() method returns true if there is an available row to read, which means that its inner state is placed before the first row. To read that first row you need to call the method and test for its return value. As long as there is a next row to read it, it returns true; otherwise it returns false. Let's write code to test the method.
Next: Testing the GetAllStudents() method >>
More ASP.NET Articles
More By Michael Youssef