在我们对数据库进行操作的时候,总是先把数据从数据库取出来,然后放到一个"容器"中,再通过这个"容器"取出数据显示在前台,而充当这种容器的角色中当属DataSet是最为普遍和重要的了,可以说DataSet在数据库和前台中起到了一个桥梁的作用。
下面就来谈谈DataSet的用法。(DataSet对象本身是没有存取数据库的能力的,它要与DataAdapter一般是配合使用的,而关于DataAdapter的用法在我的另一篇文章中有介绍,大家可以看一下)
DataSet可以包含多个数据表,可以在程序中动态地产生数据表,而这里的数据表可来自数据库,文件或者XML(前面已经讲过XML的用法了,不是很了解的话可以去看一下)。而DataSet提供了对数据进行浏览,编辑,排序,过滤和建立视图的方法。
DataSet采用非连接的传输模式访问数据库,即在将用户所请求的数据读入DataSet后,与数据库的链接就关闭了,这样其他用户可以继续使用数据源。
在我用DataSet这么久以来,不光是会用那些关于DataSet的固定语句,其实认识到DataSet的结构才是最为关键的。下面就是DataSet对象的结构:
DataSet对象的属性和方法:
DataSetName 获取或设置DataSet对象的名称
Tables
获取数据集的数据表集合(DataTableCollection),DataSet对象的所有DataTable对象都属于DataTableCollection
最常用的属性就是Tables,通过该属性,可以获得或设置数据表行,列的值。
例如,表达式"DS.Tables["ShoppingCart"].rows(i).Item(j)"表示访问ShoppingCart表的第i行第j列。
最常用的方法是Clear()和Copy().Clear方法是清除DataSet对象的数据,删除所有DataTable对象。Copy方法复制DataSet对象的结构和数据,返回值是与本DataSet对象具有相同的结构和数据的DataSet对象。
简单的例子:(没有前台代码,只有后台跟DataSet有关的部分代码,不过之后我会上传这个的案例,大家有兴趣的可以看看)
- protected void Page_Load(object sender,EventArgs e)
- {
- 链接数据库的sqlconnection暂时先省略
- SqlDataAdapter sqlad = new SqlDataAdapter(sql,con); //创建SqlDataAdapter对象并执行sql查询
- DataSet ds = new DataSet(); //创建数据集
- sqlad.Fill(ds); //填充数据集
- GridView1.DataSource=ds.Tables[0].DefaultView; //设置数据源
- GridView1.DataBind(); //绑定数据源
- }