zoukankan      html  css  js  c++  java
  • ADO.NET 快速入门(九):使用关系型数据

    DataSet 可以包含非关联表,也可以包含关联表。你可以把 DataSet 想象成一个文档数据。事实上,除了 DataSet 是基于层级模型的,其它和 XML 数据文档是一样的。由于数据通常存储在关系数据库,DataSet 可以同时处理层级型关系和主键/外键型关系。 Relationships 也有不同的执行方式。默认情况下,Deletes 和 Updates 是级联型的:假如删除一个 Customer 行,关联的 Orders 行也会被删除;假如更改一个 Customer  行的主键,关联的 Orders 表中的外键也会更改。
     
    DataSet 包含一个 Relations 集合。你可以利用关联表的 Column 或者 Columns(复合列键) 添加 Relation 到这个 Relations 集合。下面的代码在 Customers 和 Orders 之间创建一个 Relation,并命名为 CustOrders。
     
    示例一:
     
                // 使用父子列创建 Relation
                DataRelation myDataRelation = myDataSet.Relations.Add("CustOrders", myDataSet.Tables["Customers"].Columns["CustomerID"],
                    myDataSet.Tables["Orders"].Columns["CustomerID"]);
    在 DataSet 内部的 Customers 表上的 CustomerID 主键和 Orders 表上的 CustomerID 外键之间添加了 Relation 之后,你就可以遍历关联数据了。
     
    示例二:
     
                SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind;");
                SqlDataAdapter myDataAdapter = new SqlDataAdapter();
                
                DataSet myDataSet = new DataSet();
                
                myDataAdapter.SelectCommand = new SqlCommand("SELECT * FROM Customers", myConnection);
                myDataAdapter.Fill(myDataSet, "Customers");
    
                myDataAdapter.SelectCommand = new SqlCommand("SELECT * FROM Orders", myConnection);
                myDataAdapter.Fill(myDataSet, "Orders");
    
                // 使用父子列创建 Relation
                DataRelation myDataRelation = myDataSet.Relations.Add("CustOrders", myDataSet.Tables["Customers"].Columns["CustomerID"],
                    myDataSet.Tables["Orders"].Columns["CustomerID"]);
    
                // 迭代 Customers 父行
                foreach (DataRow myDataRow1 in myDataSet.Tables["Customers"].Rows)
                {
                    Console.WriteLine("客户: " + myDataRow1["ContactName"].ToString());
    
                    // 迭代 Customers 行的 Orders 子行
                    foreach (DataRow myDataRow2 in myDataRow1.GetChildRows(myDataRelation))
                    {
                        Console.WriteLine("订单号:" + myDataRow2["OrderID"].ToString());
                    }
                }
    原文链接:
  • 相关阅读:
    微信小程序-上传多张图片加进度条(支持预览、删除)
    php中120个内置函数
    angular6 NgModule中定义模块module
    Aliasing input/output properties
    angular6 Can't bind to 'zzst' since it isn't a known property of
    [转]DOM 中 Property 和 Attribute 的区别
    Angular6
    [转]VirtualBox 修改UUID实现虚拟硬盘复制
    pthread_create如何传递两个参数以上的参数
    linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)
  • 原文地址:https://www.cnblogs.com/JavCof/p/3439048.html
Copyright © 2011-2022 走看看