对于集合(列表、或者叫行集)数据,我们使用List<Order>来存储。接下来在App_Code目录下再创建一个文件 OrderManager.cs 用于从数据库返回结果集、填充列表,通常包含类似这样的代码:
public class OrderManager
{
// 根据SQL语句获取列表对象
public static List<Order> GetList(string query)
{
List<Order> list = null;
SqlDataReader reader = ExecuteReader(query);
if (reader.HasRows) {
list = new List<Order>();
while (reader.Read()){
list.Add(GetItem(reader));
}
}
reader.Close();
return list;
}
// 获取一个SqlDataReader对象
private static SqlDataReader ExecuteReader(string query)
{
string connString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
// 从一行获取一个Order对象
private static Order GetItem(IDataRecord record)
{
Order item = new Order();
item.OrderId = Convert.ToInt32(record["orderId"]);
item.CustomerId = record["CustomerId"].ToString();
item.OrderDate = Convert.ToDateTime(record["OrderDate"]);
item.Country = record["ShipCountry"].ToString();
return item;
}
}
上面的代码很好理解:GetList()方法接受一个查询语句,然后返回List<Order>列表。在GetList()方法内部,调用了 ExecuteReader()方法,ExecuteReader()方法根据传递进去的查询语句query创建并返回了一个SqlDataReader对象,它用于读取数据库返回的数据。在While语句中,调用了GetItem()方法,它根据每一个数据行创建了一个Order对象。最后将Order对象添加到List<Order&