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的应用的更多相关文章

  1. DataSet中的relation

    DataSet中的relation DataSet是ADO.Net中相当重要的数据访问模型.有一个很大的优点是可以记录多个表之间的关系.有点类似与数据库的外键. 在DataSet中也可以定义类似的关系 ...

  2. C# 导入Excel到DataSet中

    class Import { /// <summary> /// 导入Excel到DataSet中 /// </summary> /// <param name=&quo ...

  3. 使用OpenXml把Excel中的数据导出到DataSet中

    public class OpenXmlHelper { /// <summary> /// 读取Excel数据到DataSet中,默认读取所有Sheet中的数据 /// </sum ...

  4. DataSet 中的数据排序 及 DataRow装成DataTable

    1.DataSet 中的数据排序 DataSet ds = new DataSet(); // 获取当前排口的数据 ds = _xiaobill.GetHistoryData(yinZiBianm, ...

  5. DataSet中取值(转)

    1 DataSet.Table[0].Rows[ i ][ j ] 其中i 代表第 i 行数, j 代表第 j 列数 2 DataSet.Table[0].Rows[ i ].ItemArray[ j ...

  6. 在DATASET中要是想添加进另一个表怎么办?

    问:sql="select * from banzhu_manage ";adapter=new SqlDataAdapter(sql,banzhu_conn);adapter.F ...

  7. C# 手动编写 DataSet,DataTable 及遍历DataSet中的数据

    一.手动编写DataSet:    有时候不想从数据库导出 DataSet,或者有其他的需要,要将数据库里的DataSet包装成另一个样子,这个时候,了解DataSet的内部结构就非常必要.DataS ...

  8. C#中DataSet中的relation

    //关系定义的方法是 DataRelation 变量名 = “DataSet对象”.Relations.Add("关系名",DataSet对象.主表.列名 , DataSet对象. ...

  9. 导入本地Excel到DataSet中

    /// <summary> /// 导入本地Excel到DataSet中 /// </summary> /// <param name="strFileSour ...

随机推荐

  1. 【一天一道LeetCode】#64. Minimum Path Sum.md

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  2. 【一天一道LeetCode】#56. Merge Intervals

    一天一道LeetCode系列 (一)题目 Given a collection of intervals, merge all overlapping intervals. For example, ...

  3. JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结

    JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学-- ...

  4. OC语言(五)

    三十七.SEL类型-方法的包装 发送消息其实就是发送SEL. 每个方法都有与之对应的SEL类型数据. 第一次调用方法,先把方法包装成为SEL数据,再根据SEL去找方法地址,最后根据方法地址调用相应的方 ...

  5. Linux学习笔记 --iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  6. 【公开课】【阿里在线技术峰会】何登成:AliSQL性能优化与功能突破的演进之路

    MySQL的公开课,可能目前用不上这些,但是往往能在以后想解决方案的时候帮助到我.以下是阿里对公开课的整理 摘要: 本文根据阿里高级数据库专家何登成在首届阿里巴巴在线技术峰会上的分享整理而成.他主要介 ...

  7. android驱动例子(LED灯控制)

    本例子,讲述在android2.1上完全自已开发一个驱动去控制硬件口并写应用测试该驱动,通过这样一个例子,解析android下的驱动开发流程的应用调用流程,可以说是很好的入门引导 要达到的效果:通过a ...

  8. 【Matlab编程】matlab 画图

    1.  不用截图工具就可以将图保存成图像格式,并且没有背景颜色:saveas(gcf ,'outputname','png/jpg'),第三项省略时默认为fig.m文件 2.  计算形如(-1)^2/ ...

  9. Spring--FileSystemXmlApplicationContext

    //从文件系统或者统一定位资源中获得上下文的定义 public class FileSystemXmlApplicationContext extends AbstractXmlApplication ...

  10. LeetCode(36)- Implement Stack using Queues

    题目: Implement the following operations of a stack using queues. push(x) -- Push element x onto stack ...