zoukankan      html  css  js  c++  java
  • 关于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]);

    }

    }

     

    }

    }

    }

     

  • 相关阅读:
    用于Delphi的DevExpress VCL组件——富文本编辑功能升级
    5个技巧,教你优化React App性能
    DevExpress WPF模板库助力快速完成界面美化
    Web开发小技巧放送
    WinForm应用界面开发入门指南
    浅析C#中单点登录的原理和使用
    Wireshark抓包,带你快速入门
    你必须知道的EF知识和经验
    你知道SqlDataAdapter中的Fill是怎么实现的吗
    一文说通C#中的异步编程
  • 原文地址:https://www.cnblogs.com/disneyland/p/4133369.html
Copyright © 2011-2022 走看看