DataTable和DataSet可以看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?
原因是,这种容器的功能比较强大,除了可以存数据,还可以有更大用途。举例:在一个c/s结构的桌面数据库系统里,你可以把前面存放查询结果的容器里的数据显示到你客户端界面上,用户在界面上对数据进行添加、删除、修改,你可以把用户的操作更新到容器,等用户操作完毕了,要求更新,然后你才把容器整个的数据变化更新到中心数据库,这样做的好处是什么?就是减少了数据库操作,客户端速度提高了,数据库压力减小了。
DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable

DataTable,DataRow与DataView对象的增删改查

//创建和声明DataTable对象 DataTable  total=new DataTable();
//给DataTable对象添加DataColumn对象 total.Columns.Add(new DataColumn("班组",typeof(string))); total.Columns.Add(new DataColumn("姓名",typeof(string))); total.Columns.Add(new DataColumn("学科",typeof(string))); total.Columns.Add(new DataColumn("成绩",typeof(int)));
法一://声明DataRow对象 DataRow dr=total.NewRow();
//给DataRow对象中的各列赋值 dr["班组"]= "一班"; dr["姓名"]= " 李宏"; dr["学科"]= "语文 "; dr["成绩"]=98;
//将DataRow对象添加到DataTable对象中 total.Rows.Add(dr);
dr=total.NewRow(); dr["班组"]= "一班"; dr["姓名"]= " 刘京生"; dr["学科"]= "语文 "; dr["成绩"]=96; total.Rows.Add(dr);
//创建DataView对象,DataView对象的数据从DataTable对象中获得 DataView dv=new DataView(total);
//循环取出DataView中的值在页面上输出 foreach(DataRowView drv in dv) {   for(int i=0;i<drv.Row.Table.Columns.Count;i++)   {     Response.Write(drv[i]+"<br>");   } }
 法二:DataRow dr=total.NewRow();
第0列是自增ID字段,因此从1开始
dr[1]="二班"; dr[2]="李宏"; dr[3]="语文";
==================================
 
 
//创建DataView对象,DataView对象的数据从DataTable对象中获得 DataView dv=new DataView(total);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一、将DataRowView对象添加进DataView对象中 DataRowView drv=dv.AddNew(); drv["班组"]= "一班"; drv[“姓名”]= “ 赵刚"; drv["学科"]= "语文 "; drv[“成绩”]=99;
//结束编辑可以调用DataRowView的CancelEdit()方法取消插入 Drv.EndEdit();
二、修改现有的DataRowView对象 //开始编辑
dv[2].BeginEdit();
//修改列值 dv[2][“成绩”]=98;
//对束编辑可以调用DataRowView的CancelEdit()方法取消修改 dv[2].EndEdit(); 利用DataRowView的IsNew和IsEdit属性来检测DataRowView是否为新行或是否被编辑过。 三、删除现有的DataRowView对象 //调用DataView的Delete()方法,传入要删除的DataRowView的索引值 dv.Delete(1);
//调用DataRowView的Delete()方法删除
dv[1].Delete();
//调用DataTable的AcceptChanges()方法永久删除基础DataRow。 dt.AcceptChanges(); 要取消删除,可以调用DataTable的RejectChanges()方法取消删除,从而取消未提交的增加与修改

==========================================

DataTable,DataSet,DataRow与DataView的更多相关文章

  1. ADO.NET DataSet、DataTable、DataRow、DataView的学习

    对于一个datatable中的数据进行嵌套查询判断某几列数据是否相同从而确定这条数据是否一样,并确定他重复的次数COUNT1字段. 例如: DataTable dt = new DataTable() ...

  2. C#DataTable DataSet DataRow区别详解

    DataSet 是C#中用来存储数据库数据的.其实,它的作用是在内存中模拟数据库.我们现实生活中的数据库从大到小的基本结构类似于:数据库实例,表,列,行.在C#语言中,我们在内存中也模拟出了一个这样的 ...

  3. DataSet、DataTable、DataRow 复制

    DataSet.DataTable.DataRow 复制 DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个Da ...

  4. Newtonsoft.Json高级用法DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即Newtonsoft.Json datatable,dataset,modle,序列化

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而 ...

  5. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  6. DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化

    http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...

  7. 【转】给DataTable和DataRow扩展方法,直接转换为对象集合或对象

    /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为对象集合或对象 /// 补充说明:此扩展类可以极大的简化操作,但是性能低下,大数据以 ...

  8. .Net 中DataTable和 DataRow的 区别与联系

    1.简要说明二者关系 DataRow 和 DataColumn 对象是 DataTable 的主要组件.使用 DataRow 对象及其属性和方法检索.评估.插入.删除和更新 DataTable 中的值 ...

  9. DataTable和DataRow利用反射直接转换为Model对象的扩展方法类

    DataTable和DataRow利用反射直接转换为Model对象的扩展方法类   /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为 ...

随机推荐

  1. [Android]使用platform密钥来给apk文件签名的命令

    1.使用platform密钥对apk进行签名 1.1.进入<Android_Source_Path>/build/target/product/security,找到[platform.p ...

  2. 玩转Android之数据库框架ActiveAndroid的使用

    ActiveAndroid是一个开源的数据库框架,使我们在Android中使用数据库变得更为简单,今天我们就来看看这个数据库框架的使用. 1.引入ActiveAndroid 首先创建我们自己的项目,在 ...

  3. 在文件地理数据库中使用 SQL 进行报告和分析 (转)

    ================以下摘自ArcGIS10.1帮助=================== 文件地理数据库允许在 QueryDef 中通过 SubFields(字段列表)方法使用表达式和别 ...

  4. 第二种方式读取并显示HDFS中的内容

    1.讀取HDFS内容的java客戶端代碼: package Hdfs; import java.io.InputStream; import java.net.URI; import org.apac ...

  5. Yii框架页面运行流程

    Yii框架页面运行流程 CComponent | CModel | CActiveRecord.CFormModel(所有模型的父类) | 表名.php(模型) | 入口文件------------- ...

  6. 20160427Struts2--入门1

    参考资料来自传智播客:非原创,只是做个笔记: 一.Struts2简介: Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架.不过有一点大家需要注意 ...

  7. Retrofit研究1

    以下为来自Github的retrofit的介绍.话说,翻译还真蛋疼,就这个花了快3个小时. Retrofit 一个在Android和Java上类型安全的HTTP客户端 介绍 Retrofit可以把你的 ...

  8. Java I/O重定向

    1.输入重定向 命令行:java [java类文件] < [输入文件路径名] 代码:InputStream inputStream = new FileInputStream(          ...

  9. 学习笔记_Java_day13_三层的HelloWorld程序(15)--不错,整体三层架构学习

    分三层写:养成一个架构的习惯,如何编写一个大型网站 DAO数据层 service业务层 servlet web表述层

  10. ORA-12011+ORA-06512–job执行失败问题

    oracle库中的一个job,正常运行了一年多,因某种原因导致无法运行,系统尝试多次均失败之后下次执行时间就变成了 4000/1/1. 现导致job失败的问题已经解决,从新运行job时报 12011和 ...