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. Eclipse 创建 Maven 项目、Maven JavaWeb 项目

    Eclipse 创建 Maven 项目         新建一个maven项目          (默认)(如果不行第一个Create a simple ... 也选中) 默认         Jav ...

  2. 视音频编解码学习工程:TS封装格式分析器

    =====================================================视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习工 ...

  3. GIT版本控制 — 简介与安装 (一)

    简介 GIT与SVN的区别 作为当前最流行的版本控制系统,Git和SVN的几个主要不同之处在于: (1) Git是分布式的版本控制系统,SVN是集中式的版本控制系统.Git可以先把修改提交到本地仓库中 ...

  4. Swift基础之UITabBarController(这是在之前UITableView中直接添加的)

    这些基础内容基本已经可以搭建项目框架,剩下的就是一些优化,细节和数据请求问题,慢慢更新.... 在AppDelegate中创建方法 //创建方法执行UITabBarController func cr ...

  5. 【一天一道LeetCode】#39. Combination Sum

    一天一道LeetCode系列 (一)题目 Given a set of candidate numbers (C) and a target number (T), find all unique c ...

  6. 【一天一道LeetCode】#27. Remove Element

    一天一道LeetCode系列 (一)题目 Given an array and a value, remove all instances of that value in place and ret ...

  7. CentOS 6.X启动流程

    CentOS 6.X启动流程 /boot分区 启动引导程序是默认可以识别boot分区的.因此在系统还无法加载硬盘的时候,boot分区是可以识别的! initramfs内存文件系统 CentOS 6.x ...

  8. oracle临时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

    今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace,        b.segfile# ...

  9. iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用

    键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的 ...

  10. Android实训案例(五)——四大组件之一ContentProvider的使用,通讯录的实现以及ListView的优化

    Android实训案例(五)--四大组件之一ContentProvider的使用,通讯录的实现 Android四大组件是啥这里就不用多说了,看图吧,他们之间通过intent通讯 我们后续也会一一的为大 ...