• 关于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]);

    }

    }

     

    }

    }

    }

     

  • 相关阅读:
    从零开始学习SSH框架笔记之一 初识SSH框架及下载地址
    CentOS 6.0 升级内核步骤、方法
    解决Ubuntu详细信息中图形显示为未知的情况
    【Oracle XE系列之二】Oracle XE创建表空间、创建用户以及授权、查看权限
    排序算法大总结
    我的vimrc 设置
    你的c++学的怎么样?
    腾讯的笔试题一道
    一道递归算法题
    vc6 bug真多 写c++别用vc6
  • 原文地址:https://www.cnblogs.com/disneyland/p/4133369.html
Copyright © 2020-2023  润新知