一、本篇主要讲ADO.NET的核心DataSet
DataSet里面有个DataTable,DataTable还有个对应的DataView
首先呢,假设数据库的数据
id | name | mob |
---|---|---|
100 | 张三 | 15412486 |
102 | 李四 | 12789556 |
103 | 王五 | 45876133 |
缓解眼疲劳图片1
二、DataTable
根据sql语句获取数据复制一份到内存中,从内存中获取DataTable,然后我们可以对其进行修改,最终将DataTable里面的数据json序列化
DataSet DS=bll.GetData();//后端获取数据 DataTable dt=DS.Tables[0];//得到DataTable //接下来就是如何处理DataTable里面的数据 ////Table操作 DataTable newDt=dt.Clone();//克隆表的结构(不包含数据) DataTable copyDt=dt.Copy();//克隆表的结构和数据 DataRow[] rows=dt.Select("条件");//选取符合条件的行 ////列操作 //新增一列 dt.Columns.Add("sex", typeof(string));//列名-sex,类型是string型 //dt.Columns.Add("sex", typeof(string)).SetOrdinal(1);//在指定的位置增加一列 //给新增的一列赋值 foreach(DataRow dr in dt.Rows) { dr["sex"]="男"; } //删除某一列 dt.Columns.Remove("name");删除name这一列 ////行操作 //新增一行 DataRow newRow=dt.NewRow(); newRow["id"]=104; newRow["name"]="萧炎"; newRow["mob"]="12345678"; dt.rows.add(newRow); //选取某些行 DataRow[] rows=dt.Select("id>100");选取id>100的行 //遍历操作 foreach(DataRow row in rows) { string name=row["name"].ToString(); }
三、DataView
我们知道DataTable是从sql数据库里复制出来的一份数据,可以对DataTable进行操作(但不修改数据库里面的数据),比如新增一列、新增一行、修改列名、修改数据或者通过Select()方法进行筛选操作等。DataTable里面的数据是已经排好序的,但是我们是不好对DataTable进行重新排序的,如果要排序的话,难道要通过sql语句再次读取数据库吗?
那什么时候使用DataView呢?
官方上讲:DataView主要用于排序、筛选、搜索、编辑和导航。重点:修改DataView的数据,对应的DataTable数据也会改变,反之,对应的DataView数据也会随之改变。
其实呢,经实践证明:筛选、搜索等操作DataTable中的Select()方法也能做到,而且比DataView更快。毕竟DataView只是DataTable里面的数据虚拟出来的一个视图。
DataSet DS=bll.GetData();//后端获取数据 DataTable dt=DS.Tables[0];//得到DataTable DataView dv=dt.DefaultView;//得到DataTable对应的视图 //DataView dv = new DataView(dt);//也可以这样写 //筛选操作 dv.RowFilter="id='100'";//sql where 后面的条件语句 //这个RowFilter是DataView的属性,进行筛选操作,我们只需设置它的值即可,下面的Sort也是如此 //排序操作 dv.Sort="id desc";//sql order by 后面的排序语句
缓解眼疲劳图片2
四、总结
在实际工作中,我们通过sql语句只从数据库里读取一次,然后将读取的数据进行操作。在这里,我想大家看完本篇博文应该知道,处理数据的时候,能使用DataTable进行筛选的就使用DataTable里面的方法(Select()方法等),如果不能达到效果,再考虑使用DataView进行处理。
来源:https://www.cnblogs.com/ywjbokeyuan/p/12577823.html