一、本篇主要讲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进行处理。

最新文章

  1. SOUI Editor使用教程
  2. BZOJ2506: calc
  3. View的事件体系
  4. java之对象转型2
  5. 用bootstrapValidator来验证UEditor
  6. 找出Java进程中大量消耗CPU
  7. sqlserver exists和in 与exists和not in
  8. linux系统使用python监测网络接口获取网络的输入输出
  9. Qt之自定义托盘
  10. Python3练习
  11. sql_calc_found_rows原理
  12. 汇编语言--微机CPU的指令系统(五)(比较运算指令)
  13. Eclipse纯净版安装web插件
  14. react 使用 react-loadable分包
  15. 020-Json结构数据序列化异步传递
  16. 抽屉之Tornado实战(4)--发帖及上传图片
  17. 将numpy array由浮点型转换为整型
  18. SecureCRT 上传下载
  19. Linux下more命令C语言实现实践 (Unix-Linux编程实践教程)
  20. C++面试题:list和vector有什么区别

热门文章

  1. WordPress 安装主题、插件时问题解决办法
  2. Python——8函数式编程①
  3. IP 转发分组的流程
  4. 一文看懂js中的clientX,clientY,pageX,pageY,screenX,screenY
  5. pycharm专业版激活破解(亲测有效)
  6. Await/Async
  7. 06 EntityManager和EntityTransaction
  8. swoole 异步非堵塞 server/端 client/端 代码,已经测试完毕。贴代码
  9. R|生存分析 - KM曲线 ,值得拥有姓名和颜值
  10. Flask HTTP请求与响应