关于DataSet中Relations的应用
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace connect
{
class Program
{
static void Main(string[] args)
{
//建立数据集对象,像数据库一样
DataSet ds=new DataSet() ;
//建立表
DataTable dtsb = new DataTable("SB");
DataTable dtsx = new DataTable("SX");
//SB主表,创建列
dtsb.Columns.Add(new DataColumn("学号"));
dtsb.Columns.Add(new DataColumn("姓名"));
dtsb.Columns.Add(new DataColumn("性别"));
dtsb.Columns.Add(new DataColumn("总成绩"));
//SX从表,创建列
dtsx.Columns.Add(new DataColumn("学号"));
dtsx.Columns.Add(new DataColumn("姓名"));
dtsx.Columns.Add(new DataColumn("科目"));
dtsx.Columns.Add(new DataColumn("分成绩"));
//主表数据,创建行
dtsb.Rows.Add("1","陈一","男","100");
dtsb.Rows.Add("2", "王二", "女", "90");
dtsb.Rows.Add("3", "李三", "女", "80");
dtsb.Rows.Add("4", "赵四", "男", "70");
//从表数据,创建行
dtsx.Rows.Add("1", "陈一", "语文", "50");
dtsx.Rows.Add("1", "陈一", "数学", "50");
dtsx.Rows.Add("2", "王二", "数学", "90");
dtsx.Rows.Add("3", "李三", "历史", "50");
dtsx.Rows.Add("3", "李三", "地理", "30");
dtsx.Rows.Add("4", "赵四", "英文", "70");
//输出主表明细
Console.WriteLine("我是SB");
Console.WriteLine("学号 姓名 性别 总成绩");
foreach (DataRow a in dtsb.Rows)
{
Console.WriteLine("{0} {1} {2} {3}", a[0].ToString().PadRight (4,' '),a[1],a[2].ToString().PadRight (4,' '),a[3]);
}
Console.WriteLine("");
//输出从表明细
Console.WriteLine("我是SX");
Console.WriteLine("学号 姓名 科目 分成绩");
foreach (DataRow a in dtsx.Rows)
{
Console.WriteLine("{0} {1} {2} {3}", a[0].ToString().PadRight (4, ' '), a[1], a[2].ToString().PadRight(4, ' '), a[3]);
}
Console.WriteLine("");
//把表添加到dataset
ds.Tables.Add(dtsb);
ds.Tables.Add(dtsx);
//创建关系,以学号为主键
ds.Relations.Add("SBX", ds.Tables["SB"].Columns["学号"], ds.Tables["SX"].Columns["学号"]);
//历遍主表所有行,将其赋值给drsb
foreach (DataRow drsb in ds.Relations["SBX"].ParentTable.Rows)
{
Console.WriteLine("{0} {1} {2} {3}", drsb[0], drsb[1], drsb[2], drsb[3]);
//历遍drsb所有子行,将其赋值给drsx
foreach (DataRow drsx in drsb.GetChildRows("SBX"))
{
Console.WriteLine(" {0} {1} {2} {3}",drsx[0],drsx[1],drsx[2],drsx[3]);
}
}
}
}
}
关于DataSet中Relations的应用的更多相关文章
- DataSet中的relation
DataSet中的relation DataSet是ADO.Net中相当重要的数据访问模型.有一个很大的优点是可以记录多个表之间的关系.有点类似与数据库的外键. 在DataSet中也可以定义类似的关系 ...
- C# 导入Excel到DataSet中
class Import { /// <summary> /// 导入Excel到DataSet中 /// </summary> /// <param name=&quo ...
- 使用OpenXml把Excel中的数据导出到DataSet中
public class OpenXmlHelper { /// <summary> /// 读取Excel数据到DataSet中,默认读取所有Sheet中的数据 /// </sum ...
- DataSet 中的数据排序 及 DataRow装成DataTable
1.DataSet 中的数据排序 DataSet ds = new DataSet(); // 获取当前排口的数据 ds = _xiaobill.GetHistoryData(yinZiBianm, ...
- DataSet中取值(转)
1 DataSet.Table[0].Rows[ i ][ j ] 其中i 代表第 i 行数, j 代表第 j 列数 2 DataSet.Table[0].Rows[ i ].ItemArray[ j ...
- 在DATASET中要是想添加进另一个表怎么办?
问:sql="select * from banzhu_manage ";adapter=new SqlDataAdapter(sql,banzhu_conn);adapter.F ...
- C# 手动编写 DataSet,DataTable 及遍历DataSet中的数据
一.手动编写DataSet: 有时候不想从数据库导出 DataSet,或者有其他的需要,要将数据库里的DataSet包装成另一个样子,这个时候,了解DataSet的内部结构就非常必要.DataS ...
- C#中DataSet中的relation
//关系定义的方法是 DataRelation 变量名 = “DataSet对象”.Relations.Add("关系名",DataSet对象.主表.列名 , DataSet对象. ...
- 导入本地Excel到DataSet中
/// <summary> /// 导入本地Excel到DataSet中 /// </summary> /// <param name="strFileSour ...
随机推荐
- android动画之interpolator和typeEvaluator用法详解
Interpolator (插值器) 我们在写动画的时候为了达到某种效果往往需要设置插值器,用来真实的模拟生活中的场景. Interpolator (插值器)被用来修饰动画效果,定义动画的变化率,可以 ...
- 让你的动画不再生硬 Android插值器Interpolator使用秘籍
有木有厌烦生硬的动画效果,想不想让你的动画变得圆滑且 欢迎收看本期的走进科学... 停,停,别打了,(.﹏.*) 我错了-- 我们要达到的效果: 先来回顾一下普通动画的用法吧. * 缩放动画 Scal ...
- wing带你玩转自定义view系列(1) 仿360内存清理效果
本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...
- 更改EBS R12中forms的模式Servlet/Socket
EBS R12中forms的模式有:Servlet mode 和 Forms Socket mode 当我们完成Oracle EBS R12套件的快速安装后,forms的默认配置是Servlet mo ...
- 程序员的视角:java 线程
在我们开始谈线程之前,不得不提下进程. 无论进程还是线程都是很抽象的概念,有一个关于进程和线程很形象的比喻能帮我们更好的理解. 进程就像个房子,房子是一个包含了特定属性的容器,例如空间大小.卧室数量等 ...
- AngularJS进阶(五)Angular实现下拉菜单多选
Angular实现下拉菜单多选 写这篇文章时,引用文章地址如下: http://ngmodules.org/modules/angularjs-dropdown-multiselect http:// ...
- 使用Gradle发布SNAPSHOT版本到JCenter(oss.jfrog.org)
回顾历史 发布SNAPSHOT版本的问题 解决问题 完整脚本 使用方法 本文原创. 转载请注明CSDN博客出处: http://blog.csdn.net/maosidiaoxian/article/ ...
- Linux进程管理 - ps,top,pstree,signal,kill,killall举例演示
ps:将某个时间点的进程运行情况撷取下来 [root@www ~]# ps aux <==观察系统所有的进程数据 [root@www ~]# ps -lA <==也是能够观察所有系统的数据 ...
- 【编程练习】收集的一些c++代码片,算法排序,读文件,写日志,快速求积分等等
写日志: class LogFile { public: static LogFile &instance(); operator FILE *() const { return m_file ...
- jvm内存查看与分析工具
2.3 JVM的垃圾收集策略 GC的执行时要耗费一定的CPU资源和时间的,因此在JDK1.2以后,JVM引入了分代收集的策略,其中对新生代采用"Mark-Compact"策略, ...