关于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 ...
随机推荐
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十九):增加排行榜功能2
接下来回到Xcode中,首先在PopupLayer.m中添加justClose方法: -(void)justClose{ [self.gameScene removePopup]; } 然后在Game ...
- Java进阶(二十三)java中long类型转换为int类型
java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参 ...
- 跨平台移动APP开发进阶(四)AngularJS简介
AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件. 它的创新点在于,利用 数据绑定 和 依赖注入 ...
- Android4.2.2源码目录结构分析
撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40897277#t17 导读: 关于的Android目录分析,网上有很多资料,在此不 ...
- ffdshow 源代码分析 9: 编解码器有关类的总结
===================================================== ffdshow源代码分析系列文章列表: ffdshow 源代码分析 1: 整体结构 ffds ...
- Win8 HTML5与JS编程学习笔记(一)
微软的Visual Studio提供了多种构成win8应用的方式,其中最让我感到激动的是基于网页设计语言的开发模式,它提供了结合HTML5与Javascript来开发应用的方法,通过这种方法进行开发, ...
- 写论文如何做相关工作(realted work)的调研
1.找一篇目标研究领域的中文综述,读懂,对该领域有了些基本的了解,如何找到好的综述,就是要关注一些大牛的实验组的综述和进展: 2.找该中文综述引用的外文文献来看,通常是一些比较经典的文献 3.找这些外 ...
- LeetCode之“动态规划”:Word Break && Word Break II
1. Word Break 题目链接 题目要求: Given a string s and a dictionary of words dict, determine if s can be seg ...
- myBatis源码之Configuration
Configuration类主要是用来存储对mybatis的配置文件及mapper文件解析后的数据,Configuration对象会贯穿整个myabtis的执行流程,为mybatis的执行过程提供必要 ...
- mahout系列----Dirichlet 分布
Dirichlet分布可以看做是分布之上的分布.如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}.现在我们做了10000次投掷的实验,得到的实验结果是 ...