ADO.NET— 使用List集合封装多个同类型对象
//方法的返回值是一个实体类对象
public StudentExt GetStudentByStuId(string stuId)
{
//组合SQL语句
string sql = "select StudentName,StudentId,Gender,Birthday,Age,ClassName,StudentIdNo,CardNo,PhoneNumber,StudentAddress,StuImage from Students";
sql += " inner join StudentClass on Students.ClassId = StudentClass.ClassId";
sql += " where StudentId=" + stuId;
//执行查询
SqlDataReader objReader = SQLHelper.GetReader(sql);
//读取数据并封装对象
StudentExt objStudent = null;
if (objReader.Read())
{
//c查询的结果都被封装在实体类对象的属性中
objStudent = new StudentExt()
{
StudentId = Convert.ToInt32(objReader["StudentId"]),
StudentName = objReader["StudentName"].ToString(),
Gender = objReader["Gender"].ToString(),
Birthday = Convert.ToDateTime(objReader["Birthday"]),
ClassName = objReader["ClassName"].ToString(),
CardNo = objReader["CardNo"].ToString(),
StudentIdNo = objReader["StudentIdNo"].ToString(),
Age = Convert.ToInt32(objReader["Age"]),
PhoneNumber = objReader["PhoneNumber"].ToString(),
StudentAddress = objReader["StudentAddress"].ToString(),
StuImage = objReader["StuImage"] is DBnull?"":objReader["sTUImage"].ToString()
};
}
//关闭读取器
objReader.Close();
//返回封装的对象
return objStudent;
//实体对象作为返回值,消除了用户界面中对数据操作的代码,明确了“职责”
}
static void Main(string[] args)
{
//调用数据访问方法获取学员对象
StudentService objstuService = new StudentService();
List<Student> stuList = objstuService.GetStudentByStuId(“10001”);
//解析对象
Console.WriteLine(stuList .StudentName+" "+stuList .Birthday+" "+stuList .StudentAddress+" "+stuList .ClassId);
Console.Read();
}
使用对象封装和解析查询结果的好处:
对象成为数据传递的载体,消除了前台和后天的“紧密依赖”
封装和解析对象的意义:
- 稳定了数据访问接口,明确了职责
- 前台开发人员和后台开发人员可以分离并实现同步开发