http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 8132|回复: 2

[C#语言基础] 亲们,DataSet ,DataTable,DataColumn,DataRow什么关系啊

[复制链接]
发表于 2013-8-19 11:00:03 | 显示全部楼层 |阅读模式
本帖最后由 yangying 于 2013-8-19 12:43 编辑

亲们,DataSet ,DataTable,DataColumn,DataRow什么关系啊

♂--danial() 10:41:36
亲们,DataSet ,DataTable,DataColumn,DataRow什么关系啊

♂依然在飞翔() 10:44:05
Column是列,Row 是行啊
DataSet 数据集,可以包含多个DataTable
DataTable 数据表


解释如下
DataSet和DataTable详解

先构建一个结构与用户请求数据结构相同的DataTable,然后将用户的请求数据填充到构建好的DataTable中,最后将DataTable添加到DataSet中。

DataTable,,DataColumn,DataRow 深入研究
DataTable是内存中的一个关系数据表,可以独立创建使用,也可以作为DataSet的一个成员使用!
如何将DataTable作为DataSet的一个成员使用:
首先创建一个DataTable对象,其次通过使用Add方法将其添加到DataSet对象的Tables集合中
示例:
[code=csharp]DataSet dsClass = new DataSet();   //创建一个新的空班级DataSet
DataTable dtClass = new DataTable("Class"); //创建班级表
dsClass.Tables.Add(dtClass);  //将班级表添加到DataSet中[/code]
如果没有指定DataTable名称时把DataTable添加到DataSet中,该表会得到一个从“0”开始递增的默认表名
刚开始创建的表没有表结构,要定义表的结构,必须创建DataColumn对象并将其添加到表的Columns集合中。在为DataTable定义了结构之后,通过DataRow对象将数据添加到表的Rows集合中



DataColumn
DataColumn是创建DataTable的基础,通过向DataTable中添加一个或多个DataColumn对象来定义DataTable的结构。DataColumn有一些常用属性用于对输入数据的限制,例如:数据类型,数据长度,默认值。
  1. DataColumn的常用属性
  2. AllowDBNull   是否允许空值
  3. ColumnName    存储的数据类型
  4. DataType      存储的数据类型
  5. MaxLength     获取或设置文本列的最大长度
  6. DafaultValue  默认值
  7. Table        所属的DataTable的名称
  8. Unique       DataColumn的值是否唯一
复制代码
定义DataColumn有两种方法,
方法一:
[code=csharp]//创建班级名称列
DataColumn className = new DataColumn();
className.ColumnName = "ClassName";
className.DataType = System.Type.GetType("System.String");
className.MaxLength = 50;
//创建班级名称列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;[/code]


DataRow
DataRow表示DataTable中包含的实际数据,我们可以通过DataRow将数据添加到用DataColumn定义好DataTable中。
[code=csharp]//创建班级名称列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//创建一个新的数据行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();[/code]


如何自定义DataSet
  1. 1.创建DataSet对象
  2. 2.创建DataTable对象
  3. 3.创建DataColumn对象构建表结构
  4. 4.将创建好的表结构添加到表中
  5. 5.创建DataRow对象新增数据
  6. 6.将数据插入到表中
  7. 7.将表添加到DataSet中
复制代码
示例:
[code=csharp]//创建一个新的空班级DataSet
DataSet dsClass = new DataSet();
//创建班级表
DataTable dtClass = new DataTable("Class");
//创建班级名称列
DataColumn dcClassName = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//创建年级ID列
DataColumn dcGradeID = new DataColumn(GradeID",typeof(int));
//将定义好列添加到班级表中
dtClass.Columns.Add(dcClassName);
dtClass.Columns.Add(dcGradeID);
//创建一个新的数据行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();
drClass["gradeID"] = objGrade.GetGradeIDByGradeName(this.cboGrade.Text.Trim());
//将新的数据行插入班级表中
dtClass.Rows.Add(drClass);
//将班级表添加到DataSet中
dsClass.Tables.Add(dtClass);[/code]
如何获取DataSet中的数据
从DataSet中获取数据有两种方式:
1.第一种方式是通过指定DataSet中的具体DataTable的某行某列来获取数据。
    步骤:
        1.通过表名,从DataSet中获取指定的DataTable
        2.通过索引,从DataTable中获取指定的DataRow
        3.通过列名,从DataRow中获取指定列的数据
例:
//得到班级名称
dsClass.Table["Class"].Row[0]["ClassName"];
//得到年级ID
dsClass.Tables["Class"].Row[0]["GradeID"]

2.另一种方式是将DataSet中的数据直接绑定到数据展示控件上。


我们一般都需要对从DataSet中提取出来的数据做一些简单的修饰,如隐藏特定列,按照某列排序。其实很简单,.net为我们提供了一个 DataView对象,它可以像数据库中的视图一样帮助我们建立DataSet中数据对应的不同视图。(一个DataTable可以动态生成多个 DataView)
DataView
DataView为我们提供DataTable的动态视图,并可以对动态生成的视图中的数据进行排序、笪选等操作,它与数据库中的视图类似,唯一不同的是它无法提供关联DataTable的视图,它不能排除原表中存在的列,也不能向原表中追加不存在的列
示例:
[code=csharp]//过滤掉用户状态为非活动的学员
//对过过滤后的学员信息以学员名称降序排序
DataSet dsStudent = new DataSet();
DataView dvStudent = new DataView();
dvStudent.Table = dsStudent.Tables["studentTable"];
dvStudent.RowFilter = "UserState = '活动'";
dvStudent.Sort = "StudentName DESC";[/code]
DataView几个常用的属性:
[code=csharp]Table        用于获取或设置源DataTable
Sort          获取或设置DataView的一个或多个排序列以及排序顺序
RowFilter     获取或设置用于筛选在DataView中查看哪些行的表达式
Count          在应用RowFilter后,获取DataView中的行数[/code]

经验:
在开发中如果需要对DataGrigView展示的数据进行动态筛选或排序时,我们最好使用DataTable的DefaultView(默认视图)属性来得到DataTable的视图,这样我们就可以减少实例化DataView对象的步骤,以及获取DataView对象原DataTable的过程。
DataTable dtStudent = (DataTable)dataGridView.DataSource;
dtStudent.Tables["studentTable"].DefaultView.RowFilter = "UserState='活动'";







1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-19 12:41:32 | 显示全部楼层
笔误,打错了。
Column是列,Row 是行
 楼主| 发表于 2013-8-19 12:43:38 | 显示全部楼层
依然在飞翔 发表于 2013-8-19 12:41
笔误,打错了。
Column是列,Row 是行

我修改了,呵呵
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 10:19

© 2014-2021

快速回复 返回顶部 返回列表