Improving the StudentDataAccess Class for ASP.NET 2.0
(Page 1 of 5 )
Today we continue developing the StudentDataAccess class we started with in the first part of this series. We will create another static method called GetAllStudents() which returns all the records from the Students table as a StudentDataAccessCollection object, which we will create first.
If you read my article Testing the StudentDB Class for ASP.NET 2.0, you saw that we used C# generics as the return type of the method GetAllStudentsInCollection() to return a strongly typed collection of Student objects. The method looks like this:
public static List<Student> GetAllStudentsInCollection(){
try{
using (SqlConnection connection = new SqlConnection
(connString)){
SqlCommand command = new SqlCommand("GetAllStudents",
connection);
command.CommandType = CommandType.StoredProcedure;
List<Student> students = new List<Student>();
connection.Open();
using (SqlDataReader reader = command.ExecuteReader()){
while (reader.Read()){
Student student;
student = new Student((int)reader["StudentID"], reader
["FirstName"].ToString(),
reader["LastName"].ToString(), (DateTime)reader
["DateOfBirth"],
(DateTime)reader["AdmissionDate"], reader["major"].ToString(),
(bool)reader["active"]);
students.Add(student);
}
}
return students;
}
}
catch (SqlException ex){
throw new ApplicationException("A database error has
occurred.");
}
catch (Exception ex){
throw new ApplicationException("An error has occurred.");
}
}
Using generics is very easy and saves time, but you might be new to this technique; you might have not created a custom collection class by hand before. I want to show you what we will have to do without generics. If you are not familiar with generics please consult other articles because it's an important subject for developing .NET applications.
In the next section I will show you an alternative to using generics. We will create a class called StudentDataAccessCollection that we will use to store objects of type StudentDataAccess which represent records in the Students table. So you might retrieve all the records from the Students table, use them to create StudentDataAccess objects, and add those objects to an instance of type StudentDataAccessCollection. If you do that you will be able to execute code that uses a foreach statement -- for example, to iterate through the StudentDataAccess objects in the StudentDataAccessCollection and use their properties as we are going to see soon.
Next: Creating the StudentData AccessCollection class >>
More ASP.NET Articles
More By Michael Youssef