二、DataSet
1、SqlDataReader是连接相关的, SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。
2、SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取。
3、代码示例:
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);//Fill()执行查询语句,将数据装入数据集
(1)Fill()执行查询语句,将数据装入数据集。
(2)SqlDataAdapter da=new SqlDataAdaper(sqlStr,conn); //创建适配器对象,告诉它要做什么,走哪条路去。
(3)DataSet ds=new DataSet(); //创建数据集对象(程序端的临时数据库)。
(4)da.Fill(ds); //调用fill方法,填充数据集。(先去数据库查询结果集,并把结果集返回赋值给数据集)。
4、SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。
foreach (DataRow row in dataset.Tables[0].Rows) row["Name"]
5、适配器获取的数据集中可能会有多个数据表。