当应用程序需要查询数据时,我们可以使用DataReader对象来读取数据,DataReader每次只读取一行数据到内存中。如果我们想查看100条数据,就要从数据库读100次,并且在这个过程中要一直保持和数据库的连接,这就给数据库服务器增加了很大的负担。
ADO.NET提供了DataSet(数据集)对象来解决这个问题。利用数据集,我们可以在断开数据库连接的情况下操作数据,可以操作来自多个数据源的数据。
认识DataSet对象
我们可以简单地把数据集理解为一个临时的数据库,它把应用程序需要的数据临时保存在内存中,由于这些数据都缓存在本地机器上,就不需要一直保持和数据库的连接。我们的应用程序需要数据时,就直接从内存中的数据集读取,也可以对数据集中的数据进行修改,然后将修改后的数据一起提交给数据库。
数据集不直接和数据库打交道,它和数据库之间的相互作用都是通过.NET数据提供程序来完成的,所以数据集是独立于任何数据库的。数据库集中包含多个表,这些表构成了数据表集合,其中的每个数据表都是一个DataTable对象。在每个数据表中又有列和行,
所有的列一起构成了一个数据列集合,其中每个数据列叫做DataColumn。所有的行集合构成了数据行集合,每一行叫做DataRow。
DataSet位于System.Data;命名空间下。一般在VS2005/VS2008中,都自动引入了该命名空间。
下面,我们就看一下,如何手动创建一个DataSet(数据集)
- class Demo
- {
- static void Main()
- {
- //使用new关键字创建DataSet对象
- DataSet ds = new DataSet();
- //创建一个DataTable对象
- DataTable dtClass = new DataTable("table");
- //创建两列 name score
- DataColumn name = new DataColumn("name",typeOf(string));
- name.MaxLength = 10;
- DataColumn score = new DataColumn("score",typeOf(int));
- //添加列至表
- dtClass.Columns.Add(name);
- dtClass.Columns.Add(score);
- //利用DataTable的NewRow()方法创建一个DataRow对象
- DataRow dr = dtClass.NewRow();
- dr["name"] = "hamber";
- dr["score"] = 100;
- dtClass.Rows.Add(dr);
- //将表添加进DataSet中
- ds.Tables.Add(dtClass);
- }
- }