打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DataSet数据集表之间的关联
        1.定义DataSet对象和数据表Customers、Orders
        DataSet ds = new DataSet("CustomerDS");
        DataTable tabCus = new DataTable("Customers");
        DataTable tabOrders = new DataTable("Orders");
        2.定义表的列并添加到表中,最后将表添加到记录集ds中
        (1)表Customers的数据列

        DataColumn dcCustomerID = new DataColumn("CustomerID", System.Type.GetType("System.Int32"));
        DataColumn dcCustomerName = new DataColumn("CustomerName", System.Type.GetType("System.String"));

        (2)表Orders的数据列
        DataColumn dcOrderID = new DataColumn("OrderID", System.Type.GetType("System.Int32"));
        DataColumn dcOrdersCustomerID = new DataColumn("CustomerID", System.Type.GetType("System.Int32"));
        (3).将列添加到表中并设置主键
        tabCus.Columns.Add(dcCustomerID);
        tabCus.Columns.Add(dcCustomerName);
        tabCus.PrimaryKey = new DataColumn[] { dcCustomerID };
        tabOrders.Columns.Add(dcOrderID);
        tabOrders.Columns.Add(dcOrdersCustomerID);
        tabOrders.PrimaryKey = new DataColumn[] { dcOrderID };
        ds.Tables.Add(tabCus);
        ds.Tables.Add(tabOrders);
        3.创建DataRelation并添加到记录集中
        (1)创建关联字段

        DataColumn parent = ds.Tables["Customers"].Columns["CustomerID"];
        DataColumn child = ds.Tables["Orders"].Columns["CustomerID"];

        (2)创建DataRelation对象
        DataRelation customerOrder = new DataRelation("customerOrder", parent, child);
        (3)在记录集ds中添加关系
        ds.Relations.Add(customerOrder);
        4.为表添加记录
        (1)为表Customers添加数据
        DataRow row1 = tabCus.NewRow();
        row1["CustomerID"] = 10000;
        row1["CustomerName"] = "张玲玲";
        DataRow row2 = tabCus.NewRow();
        row2["CustomerID"] = 10001;
        row2["CustomerName"] = "李娜";
        tabCus.Rows.Add(row1);
        tabCus.Rows.Add(row2);
        (2)为表Orders添加数据
        DataRow rowOrder1 = tabOrders.NewRow();
        rowOrder1["OrderID"] = 1;
        rowOrder1["CustomerID"] = 10000;
        DataRow rowOrder2 = tabOrders.NewRow();
        rowOrder2["OrderID"] = 2;
        rowOrder2["CustomerID"] = 10000;
        DataRow rowOrder3 = tabOrders.NewRow();
        rowOrder3["OrderID"] = 3;
        rowOrder3["CustomerID"] = 10001;
        tabOrders.Rows.Add(rowOrder1);
        tabOrders.Rows.Add(rowOrder2);
        tabOrders.Rows.Add(rowOrder3);
        5.数据集接受数据的修改
        ds.AcceptChanges();
        6.显示Orders表数据,其中Orders表中的CustomerID字段应该用Customers表中CustomerId字段所对应的CustomerName字段替换
        Response.Write("---------订单表数据---------");
        Response.Write("<table><tr><td>订单ID</td><td>客户姓名</td></tr>");
        foreach (DataRow dr in ds.Tables["Orders"].Rows)
        {
            DataRow rowParent = dr.GetParentRow("customerOrder");
            Response.Write("<tr>");
            Response.Write("<td>");
            Response.Write(dr["OrderID"].ToString());
            Response.Write("</td>");
            Response.Write("<td>");
            Response.Write(rowParent["CustomerName"].ToString());
            Response.Write("</td>");
            Response.Write("</tr>");
        }
        Response.Write("</table>");
 

    注:
         1.DataSet中,使用DataRelation对象和Relations集合可以在各DataTable之间建立关联性
           (1)DataSet 中各 DataTable 之间可以建立关联性
                Primary Key ? Parent Column
                Foreign Key ? Child Column
           (2)使用DataRelation 对象与 Relations 集合
               DataRelation dr= new DataRelation("CustomersOrders",ds.Tables("Customers").Columns("CustomerID"),ds.Tables("Orders").Columns ("CustomerID"))
               ds.Relations.Add(dr);
        2.GetChildRows与GetParentRows
          (1).GetChildRows,可以取得关联 Child 表格中的数据
          (2).GetParentRows,可以取得所关联的 Parent 表格中的数据
              可以使用Visual Designer Tools来控制表格之间的关联
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DataTable,DataView和DataGrid中一些容易混淆的概念
ADO.NET对象模型 - 技术改变世界!学习改变自己! - 博客园
DataSet 中的 Relations 属性
主从表
Developer Express 之 XtraReport如何动态绑定数据 - Cook...
C#操作Excel类(通用?)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服