DataSet中的relation
DataSet中的relation
DataSet是ADO.Net中相当重要的数据访问模型。有一个很大的优点是可以记录多个表之间的关系。有点类似与数据库的外键。
在DataSet中也可以定义类似的关系。DataSet有一个属性Relation,是DataRelation对象的集合,要创建新的关系,可以使用Relation的Add()方法。下面以NorthWind为例,说明这个过程:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace DataSetRelationStudy
{
class Program
{
static void Main(string[] args)
{
SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=Northwind;Integrated Security=True");
//生成一个DataSet用来接受从数据库来的表,DataSet本身可以看做一个“内存中的数据库”
DataSet myDs = new DataSet();
//用两个数据适配器访问数据库
SqlDataAdapter custAdapter = new SqlDataAdapter("SELECT * FROM Customers", conn);
SqlDataAdapter orderAdapter = new SqlDataAdapter("SELECT * FROM Orders", conn);
//将取得的数据存入DataSet中两个表
custAdapter.Fill(myDs, "Customers");
orderAdapter.Fill(myDs, "Orders");
//在Customers表和Orders之间定义关系,实现“一对多”关系
//其中Customers 是 父表,是一对多中的“一”
//Orders 是子表,是一对多中的 “多”
//关系定义的方法是 DataRelation 变量名 = “DataSet对象”.Relations.Add("关系名",DataSet对象.主表.列名 , DataSet对象.子表.列名);
//这样便在两张表之间建立了一对多关系,相当于“外键”
//利用关系可以方便的在两表之间导航
DataRelation custOrderRelation = myDs.Relations.Add("CustOrders",
myDs.Tables["Customers"].Columns["CustomerID"], myDs.Tables["Orders"].Columns["CustomerID"]);
foreach (DataRow custRow in myDs.Tables["Customers"].Rows)//利用关系来查找Customers表中每个人的订单
{
Console.WriteLine(" Custeomer ID: "+custRow["CustomerID"]+" Name: "+custRow["CompanyName"]);
//下面是关键,主表中的行可以用 行.GetChildRows(关系变量) 来取得子表中的相关行
//可以用 行.GetChildRows("关系名称") 调用,名称是存在DataSet的Relations属性中的名字
//返回的是一个DataRow的集合,可以遍历这个集合来取得所有的子项
//foreach(DataRow orderRow in custRow.GetChildRows(custOrderRelation))
foreach(DataRow orderRow in custRow.GetChildRows("CustOrders"))
{
Console.WriteLine(" Order ID: "+orderRow["OrderID"]);
}
}
conn.Close();
Console.Read();
}
}
}
转载于:https://www.cnblogs.com/candl/p/4142519.html
DataSet中的relation相关推荐
- 【原创】数据库中时间字段的值读取到DataSet中后,毫秒部分丢失。
数据库中时间字段的值读取到DataSet中后,毫秒部分丢失. 在网上查了些解决方案,说读取时间时,先转化为DateTime类型,然后在ToString("yyyy-MM-dd HH:mm:s ...
- 对于DataSet中的问题真是郁闷啊
我将一个DataSet放到一个Session中,将Session中的一个表绑定到一个DataGrid中,在DataGrid中我加入了模板列. DataSet表的示例: 字段1 字段2 字段3 删除标记 ...
- 数据库-ADONET-在数据集DataSet中使用关系对象DataRelation处理关系
处理关系数据 数据库中,表很少是独立结构的,大部分数据库都包含相互关联的表. 在构建应用程序时,会遇到--显示或者通过程序设计访问数据库中相关表的数据的情况. 用户会希望,能通过在不同的表之间定位,来 ...
- 获得 DataSet中的记录总数
查看文章 获得 DataSet中的记录总数 2009-08-05 15:00 获得 2009-08-05 15:00 获得 DataSet中的记录总数 DataSet ds = new D ...
- dataset中的数据批量导入oracle数据库,c#如何将dataset中的数据批量导入oracle数据库...
c#如何将dataset中的数据批量导入oracle数据库以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c#如何将da ...
- C# 读取Excel CSV 类型文件到DataSet中,反之从DataSet写入excel
/// <summary> /// 设置文件保存位置, /// </summary> /// <returns>返回文件路径</returns> pri ...
- 将勾选数据从dataset中筛选出来
为什么80%的码农都做不了架构师?>>> 方案一: DataSet dsTemp = new DataSet();dsTemp = dsDt.Clone();DataRow[] ...
- tensorflow eager 模式下打印dataset中的数据
tensorflow eager 模式下打印dataset中以及经过feature column后的数据 由于调试的需求,需要对比dataset中的原始数据和经过feature_column后的数据, ...
- 将多个DataTable添加到指定的DataSet中
将多个DataTable添加到指定的DataSet中 如何将多个DataTable添加到指定的DataSet中 事件起因:从数据库中,查询多个dataTable,现在想一下子返回多个table,所以就 ...
最新文章
- kafka异步推送设置重试_一篇文章了解 Kafka 幂等性的原理及实践
- Linux crontab 命令格式
- unity模块切换_(一)Unity3D模块介绍
- C驱动程序是怎么跑起来的
- android 发送前台广播,使用IntentService与BroadcastReceiver实现后台服务(Android7.0可用)...
- mysql command line client 目标不对_简单几招提高MySQL安全性
- [C++ rudiment][转]typedef 使用
- ffmpeg 解码视频(h264、mpeg2)输出yuv420p文件
- WPF如何给窗口设置透明png的图片背景
- [VC++]最小化图标至托盘中
- [IOI2005]Riv 河流
- iptables 开放端口
- UCloud可支撑单可用区320,000服务器的数据中心网络系统设计
- Sort代码详解学习
- python 遗传算法书籍推荐_转 强烈推荐遗传算法入门例子
- 诚龙网刻PXE网刻出错解决
- 菜菜之路-C语言求阶乘和
- artDialog对话框组件使用方法
- Java8新特性之Joining
- 《HikariCP数据库连接池实战》学习笔记(二):获取连接原理
热门文章
- arduino char*转string_【201期】面试官:String长度有限制吗?是多少?还好我看过...
- tensorflow学习(5.实际图片的读取以及lenet-5的搭建)
- 笔记:Matrix completion by Truncated Nuclear Norm Regularization
- 有三AI知识星球官宣,BAT等大咖等你来撩
- 全球及中国本质安全校准器行业销售前景与竞争规模预测报告2022-2027年
- 全球及中国水彩调色板行业销售前景与投资商机研究报告2022版
- 全球及中国天然气终端销售市场产量预测及发展策略分析报告2021年版
- SpringMVC之context-dispatcher.xml,了解基本的控制器
- jmeter设置全局变量
- API(Application Programming Interface,应用程序编程接口)