C# 关于DataSet, DataTable, DataRow 和DataColumn的区别和用法

简介:

今天做项目的时候有个地方需要在后台重组一下数据集,自然而然就会想到去重组一个DataSet出来了,因为做过的项目比较少,所以以前也没有遇到相关的情况,趁着这个机会自己也学习一下。

下面先用图例展示一下这四者的关系。其实很好理解。

wKiom1MEZ7uhwZkLAADJ1s1kVtI852.jpg

如图,DataSet里可以放多个DataTable,这就是平时我们再给ds赋完值之后会判断一下ds.table[0].Rows.count>0的原因,要指明是哪个table,其次就是DataTable里是由两部分组成的,一个是DataColumn,一个是DataRow,在我理解看来两者没有包含关系,非要说个联系出来,我觉得算是交叉吧,下面用代码来说明一下可能更一目了然些。

比如说我们要创建一个DataTable表,里面有[姓名],[年龄],[性别],[兴趣]这四列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//首先创建一个DataTable对象
DataTable dt =  new  DataTable();
//new DataColumn创建了新的一列,并给这列起个列名,Add方法则是把这个新创建的列加入到创建的dt对象中
dt.Columns.Add( new  DataColumn( "姓名" ));
dt.Columns.Add( new  DataColumn( "性别" ));
dt.Columns.Add( new  DataColumn( "年龄" ));
dt.Columns.Add( new  DataColumn( "兴趣" ));
//由此我们创建了一个表,并且此表中有四列且分别有自己的名字
//下面我们需要往这个表里添加一些数据
//创建一个DataRow对象,注意这里是用dt的一个NewRow方法指向了dr对象,这样写的作用就是使dr对象成为了dt表的一行记录,并且这一行记录拥有四列
DataRow dr = dt.NewRow();
//分别给各列赋值
dr[ "姓名" ] =  "张三" ;
dr[ "性别" ] =  "男" ;
dr[ "年龄" ] =  "20" ;
dr[ "兴趣" ] =  "打篮球" ;
//将此条记录加入到dt中去
dt.Rows.Add(drTmp);
//将这个DataTable加入到DataSet中去
DataSet ds =  new  DataSet();
ds.Tables.Add(dt);

相信看完代码大家都能很好的理解这四个D之间的关系了,最终结果就是ds中的第一个数据表里有一条上述的记录。

不一定要像我上面写的那样实现,实现的方法有多种,根据项目的情况去选择用哪种。










本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1360744,如需转载请自行联系原作者

目录
相关文章
|
11天前
|
安全 C#
C# List基本用法
C# List基本用法
|
25天前
|
SQL 安全 API
C# 读取Word表格到DataSet
C# 读取Word表格到DataSet
|
1月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
1月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
1月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
1月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
1月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
1月前
|
C#
C#系列之ref和out的区别
C#系列之ref和out的区别
|
1月前
|
C#
C#中IsNullOrEmpty和IsNullOrWhiteSpace的区别?
C#中IsNullOrEmpty和IsNullOrWhiteSpace的区别?
|
3月前
|
开发框架 .NET 编译器
C# 9.0中的静态匿名函数:引入static关键字的新用法
【1月更文挑战第15天】C# 9.0为匿名函数带来了一个新的修饰符static,允许开发者明确指定匿名函数不会捕获其包含作用域中的任何变量。这一特性增强了代码的性能和可读性,同时减少了因不小心捕获变量而导致的潜在错误。本文将详细探讨C# 9.0中静态匿名函数的语法、使用场景以及它们如何影响代码的性能和安全性。