对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,一经查实,立即删除!

相关文章

Doc2Vec训练相似文章识别模型

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

实时重复文章识别——SimHash

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

深入理解simhash原理

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

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、……这个数列从第三项开始,每一项都等于前两项之和。 在数学上,斐波纳契数列以如下被以递归的方法定…

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

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

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

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

大数据技术之 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…

大数据技术之 Kafka (第 2 章 Kafka快速入门)

第 2 章 Kafka 快速入门 下载安装kafka集群 1.需要jdk 2.需要zookeeper,这个东西在最新版的Kafka中内置。 3.下载Kafka安装包 (下载官网地址:Apache Kafka) 一,下载Kafka安装包 二,Kafka安装包上传li…

使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器

本文转载:http://www.cnblogs.com/lefay/archive/2010/07/25/1784919.html转载于:https://www.cnblogs.com/51net/archive/2012/04/21/2462431.html

文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法

文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法 原文链接 原创: 鲍捷 文因互联 前天 做成一件事儿不容易,而坑恒在。 鲍捷博士于5月10日在将门创投的线上 talk 中盘点了人工智能项目的大坑小坑,选出了看上去非常反常识的十…

启动kafka失败报内存不足(Cannot allocate memory)

原因分析,因为我的虚拟机内存一共才1G 查看一下我的虚拟机内存还剩余多少? 天呐,我的只有60M了 我们看下kafka的启动脚本 vim kafka-server-start.sh 看见下面的脚本文件内容没有,默认是1G,而我只有60M&#xff0…

Introduce Null Object(引入Null对象)

Introduce Null Object(引入Null对象)你需要再三检查某对象是否为null。将null值替换为null对象。if (customer null) plan BillingPlan.basic(); else plan customer.getPlan(); 动机多态的最根本好处在于:你不必再向对象询问"你是…

zookeeper Error contacting service. It is probably not running

通过命令zkServer.sh start之后,显示STARTED 通过client测试报错 无法连接 连接关闭 Connecting to localhost:2181 2020-03-29 12:44:31,855 [myid:] - INFO [main:Environment100] - Client environment:zookeeper.version3.4.13-2d71af4dbe22557fda74f9a9b430…

引言

推荐系统从0到1_引言什么是推荐?什么是推荐系统?推荐系统的应用什么是推荐? 说起推荐,就不得不说搜索。搜索这里指信息检索,在大量的信息中,我们需要找到自己需要的信息,就用到了搜索引擎&…

JNI的方式调用DLL(SO)(上)

最近有个项目要调用原有的DLL文件,本来准备使用JNA,可是客户不同意,非要使用JNI的方式。万般无奈之下,只能重新使用JNI,现将JAVA调用动态链接库的一般方法总结如下。 JNI是Java Native Interface(JAVA本地调…

搭建推荐系统所需要的材料

搭建推荐系统所需要的材料人力物力推荐系统的原材料物品流量最后人力物力 在上一小节中《推荐系统的必要性》里已经讨论过一个推荐业务团队需要哪些人员储备,需要什么核心技术等。这里在重点说下物力,即机器资源设备。 往往从头开始搭建这样一个团队&a…

kafka:topic为什么要进行分区?副本机制是如何做的?

kafka为什么要在topic里加入分区的概念?如果没有分区,topic中的segment消息写满后,直接给订阅者不是也可以吗? Kafka可以将主题划分为多个分区(Partition),会根据分区规则选择把消息存储到哪个分区中,只要如…