对DataTable的一些解释

最经做导入导出Excel时,经常操作DataTable,DataSet,就按自己的需求对他们的一些常用的东西进行了一下总结。

一、DataTable简介    

          (1)构造函数 
          DataTable()  
不带参数初始化DataTable 类的新实例。 
          DataTable(string tableName) 
用指定的表名初始化DataTable 类的新实例。 
          DataTable(string tableName, string tableNamespace)
用指定的表名和命名空间初始化DataTable 类的新实例。 
          (2)
常用属性 
          CaseSensitive   
指示表中的字符串比较是否区分大小写。 
          ChildRelations  
获取此DataTable 的子关系的集合。 
          Columns            
获取属于该表的列的集合。 
          Constraints       
获取由该表维护的约束的集合。 
          
DataSet               获取此表所属的DataSetDataSet相关信息,可见我以前的一篇文章《数据访问(2)DataSet 
          DefaultView      
获取可能包括筛选视图或游标位置的表的自定义视图。 
          
HasErrors          获取一个值,该值指示该表所属的DataSet 的任何表的任何行中是否有错误。 
          MinimumCapacity 
获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50 
          Rows                 
获取属于该表的行的集合。 
          
TableName       获取或设置DataTable 的名称。 

          (3)常用方法 
          AcceptChanges()  
提交自上次调用AcceptChanges() 以来对该表进行的所有更改。 
          BeginInit()        
开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。

          Clear()               清除所有数据的DataTable 
          Clone()             
克隆DataTable 的结构,包括所有DataTable 架构和约束。 
          EndInit()           
结束在窗体上使用或由另一个组件使用的DataTable 的初始化。初始化发生在运行时。 
          ImportRow(DataRow row)   
DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。 
          Merge(DataTable table) 
将指定的DataTable 与当前的DataTable 合并。 
          NewRow()        
创建与该表具有相同架构的新DataRow

 二、DataTable使用技巧

  下面使部分测试代码:

 

View Code
 1 //关于DataSet与DataTable的解释
2 private void text()
3 {
4 DataSet ds1 = new DataSet("datasetname");
5 DataTable dt1 = new DataTable("table1");
6
7 //为Datatable添加列
8 dt1.Columns.Add(new DataColumn("col1"));
9 dt1.Columns.Add(new DataColumn("col2"));
10 //另一种添加列的方法,可以在后面定制列的属性,包括列名,数据类型,是否为空,设置主键,自动增长等
11 DataColumn col0 = dt1.Columns.Add();
12 col0.ColumnName = "col0";
13 col0.AllowDBNull = true;//是否为空
14 col0.MaxLength = 10;//设置文本最大长度
15
16 dt1.PrimaryKey = new DataColumn[] { dt1.Columns["col1"] };//设置主键
17 dt1.Columns["col1"].AutoIncrement = true;//自动增长
18 dt1.Columns["col1"].AutoIncrementSeed = 0;
19 dt1.Columns["col1"].AutoIncrementStep = 1;
20
21 //为DataTable添加数据,Row0
22 DataRow dr;
23 dr = dt1.NewRow();
24 dr.BeginEdit();
25 //在此处可以得知,下面两种方式都可以但是推荐使用dr["col0"]
26 dr[1] = "2";
27 dr["col0"] = "3";
28 dr.EndEdit();
29
30 //为DataTable添加数据,Row1
31 DataRow dr2 = dt1.NewRow();
32 dr2.BeginEdit();
33 dr2[1] = "22";
34 dr2[2] = "33";
35 dr2.EndEdit();
36 dt1.Rows.Add(dr);
37 dt1.Rows.Add(dr2);
38
39 //为DataTable添加数据,Row2
40 object[] aValue = {"2","222","333" };
41 dt1.LoadDataRow(aValue,false);
42
43 //对Row中数据的修改
44 DataRow roweidt = dt1.Rows.Find("1");//表中必须有主键
45 if (roweidt == null)
46 {
47 //没有查找到
48 }
49 else
50 {
51 roweidt.BeginEdit();
52 roweidt["col2"] = "12";
53 roweidt["col0"] = "13";
54 roweidt.EndEdit();
55 }
56
57 //对空值的处理
58 DataRow roweidt2 = dt1.Rows.Find("1");//表中必须有主键
59 if (roweidt2 == null)
60 {
61 //没有查找到
62 }
63 else
64 {
65 if (roweidt2.IsNull("col2"))
66 { }
67 else
68 {
69 roweidt2.BeginEdit();
70 roweidt2["col2"] = DBNull.Value;//赋予空值
71 roweidt2["col0"] = "13";
72 roweidt2.EndEdit();
73 }
74 }
75
76 //删除DataRow
77 //DataRow roweidt3 = dt1.Rows.Find("1");
78 //roweidt3.Delete();
79
80 //清除DataRow
81 DataRow roweidt4 = dt1.Rows.Find("1");
82
83 dt1.Rows.Remove(roweidt4);
84 //dt1.Rows.RemoveAt(index);
85
86 //将Datatable加入到DataSet中
87 ds1.Tables.Add(dt1);
88
89 //检验部分
90 string tmp1 = dt1.Columns[0].ColumnName;
91 string tmp2 = dt1.Rows[1][2].ToString();
92 string tmp3 = ds1.Tables["table1"].Rows[1][2].ToString();
93 }

 

参考:C#中 DataTable使用详解

 三,深入了解DataTable,以及数据库之间的表传送问题请看

深入详解DataTable :

 http://alexis.blog.51cto.com/2621421/573969

四,关于Datatble中的简单的数据运算,请参照

C#详解DataTable计算功能的实现

转载于:https://www.cnblogs.com/justinjia/archive/2012/04/04/2432267.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最优化学习笔记(二十)——全局搜索算法

一、引言 前边的博文我们讨论过一些迭代算法,包括梯度方法、牛顿法、共轭梯度法和拟牛顿法,能够从初始点出发,产生一个迭代序列,但是往往这些迭代序列只能收敛到局部极小点,而且这些迭代方法需要计算目标函数的一阶导数…

Elasticsearch查询性能优化

constant_score的用处 当我们不关心检索词频率TF(Term Frequency)对搜索结果排序的影响时,可以使用constant_score将查询语句query或者过滤语句filter包装起来。 检索词频率:检索词在该字段出现的频率。出现频率越高&#xff0c…

Doc2Vec训练相似文章识别模型

一、需求描述 由于在平台上发布的文章是来源于不同渠道和作者的,发布的文章也存在一定程度上的抄袭或者太相似。为了避免对用户体验造成影响,避免不必要的文章费用支出,需要识别出哪些文章是相似的。数据源是若干文章(中文&#x…

微软ping程序源代码完整版(附详细的注释)

作者:侯志江 单位:天津大学软件学院 E-mail :tjuhzjemailyahoo.com.cn 日期:2005年1月1日 内容简介: 编写自己的一个ping程序,可以说是许多人迈出网络编程的第一步吧!!这个ping程序的源代码经过我的修改和调试,基本上可以取代windows中自带的ping程序. 各个模块…

ElasticSearch原理

3.1解析es的分布式架构 3.1.1分布式架构的透明隐藏特性 ElasticSearch是一个分布式系统, 隐藏了复杂的处理机制 分片机制:我们不用关心数据是按照什么机制分片的、最后放入到哪个分片中 分片的副本: 集群发现机制(cluster discovery):比如当前我们启动了一-个es进程…

实时重复文章识别——SimHash

一、背景介绍 在前边的文章中,我们采用的是用google的Doc2Vec模型来识别重复文章的,从线上运行的效果来看,它的准确率是比较高的。当然,这是建立在把所有的文章都当做训练数据来训练Doc2Vec模型的基础上的,它推断出一篇…

Duplicate entry...for key...

Duplicate entry...for key...的错误原因是主键的唯一值重复,在对数据库进行修改、插入操作时,一但主键的唯一值重复就会报此错误,有时在表中存在多个主键时,对表操作仍然报此错误,是因为对该表的索引造成的。例如一个…

深入理解simhash原理

一、LSH 介绍 LSH(Locality sensitive hashing)是局部敏感性hashing,它与传统的hash是不同的。传统hash的目的是希望得到O(1)的查找性能,将原始数据映射到相应的桶内。 LSH的基本思想是将空间中原始数据相邻的2个数据点通过映…

我的bolg,我的收获(MVC首次接触)

一:VO:定义变量和getter和getter方法。 二:DBC:DateBaseConnection 三:接口:记住接口首字母用I开头。并且查询时用FindXxx等等区别 四:Impl实现类: 五:代理模式,负责关闭…

IntelliJ IDEA tomcat配置

1,首先安装好 IntelliJ IDEA 开发工具 2,右上角这里有个 Edit Configurations 3,添加模板 选择本地安装的tomcat 和 选择jdk 4,添加tomcat 这里tomcat就安装好了

Think in Java之斐波那契数列

斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。 指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。 在数学上,斐波纳契数列以如下被以递归的方法定…

(论文阅读笔记1)Collaborative Metric Learning(一)(WWW2017)

一、摘要 度量学习算法产生的距离度量捕获数据之间的重要关系。这里,我们将度量学习和协同过滤联系起来,提出了协同度量学习(CML),它可以学习出一个共同的度量空间来编码用户偏好和user-user 和 item-item的相似度。 …

《论道HTML5》内容技术分享活动

HTML5小组的第12次活动,本期沙龙围绕5月出版的《论道HTML5》重点章节内容展开,由我和另外一位作者秀野堂主现场分享。欢迎大家参加,下面是活动的详细信息。活动介绍:时间:2012年04月21日 13:30-18:00地址:东…

基于SpringBoot实现一个可扩展的事件总线

基于SpringBoot实现一个可扩展的事件总线 前言 在日常开发中,我们经常会用到事件总线,SpringBoot通过事件多播器的形式为我们提供了一个事件总线,但是在开发中我们经常会用到其他的实现,比如Guava、Disruptor的。我们将基于Spri…

(论文阅读笔记1)Collaborative Metric Learning(二)(WWW2017)

三、协同度量学习 这一部分,我们讨论CML作为一种更自然的方法获得关联关系。CML的思路是这样的:我们在已知正例关系的user-item集合S上建立一个隐性反馈模型,并且学习user-item的距离作为他们的关系。学习到的距离使得S中的对更加紧密&#x…

处理sharepoint 列表中的 person or group类型字段

如果直接取列表项的值,person or group 类型字段会是 userid;#value 的样式,所以对此类型字段需转换成 spuser 处理 SPUser test GetSPUser(oItem, assocList.Fields.GetField("AssociateName"));if (user.Sid.Equals(test.Sid)){ ...}privat…

大数据技术之 Kafka (第 1 章 Kafka 概述)

第 1 章 Kafka 概述 1.1 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 1.2 消息队列 1.2.1 传统消息队列的应用场景 MQ传统应用场景之异步处理 使用消息队列的好处 1&a…

那些你无比崇拜的厉害人,是如何建构知识体系的

那些你无比崇拜的厉害人,是如何建构知识体系的? 2018-04-04 六合同风 文 | Lachel 高效思维达人,知识管理专家,深度思考践行者,领英、36氪特约作家 来源 | L先生说(ID:lxianshengmiao&#x…

嵌入式成长轨迹25 【Linux应用编程强化】【Linux下的C编程 下】【实例:客户端/服务器端程序】...

给出一个客户/服务器程序开发的案例,实现从服务器状态的远程监视功能。同时,客户端采用图形界面来显示数据。这个案例涵盖了网络编程和GUI编程的相关知识,读者应该注意其中的结合点。具体内容包括: 服务器端程序设计 客户端程序设…