• 创建分层行集的父表和子表之间的关系


    OLE DB 章节

    分层行集或章节(OLE DB 类型 DBTYPE_HCHAPTER、ADO 类型 adChapter)可用于填充 DataSet 的内容。当 OleDbDataAdapter 在 Fill 操作过程中遇到章节列时,将为章节列创建一个 DataTable,并使用章节中的列和行填充该表。为章节列创建的表使用父表名称和章节列名称来命名,其形式为“ParentTableNameChapteredColumnName”。如果 DataSet 中已存在与章节列的名称相匹配的表,则将使用章节数据填充当前表。如果现有表中不存在与章节中的列相匹配的列,则将添加新列。

    在使用章节列中的数据填充 DataSet 中的表之前,将创建分层行集的父表和子表之间的关系,方法是向父表和子表添加一个整数列,将父列设置为自动递增,然后使用两个表中所添加的列来创建 DataRelation。所添加的关系使用父表和章节列名称来命名,其形式为“ParentTableNameChapterColumnName”。

    请注意,相关列仅存在于 DataSet 中。如果在随后从数据源进行填充,则将使新行被添加到表中,而不是使更改被并入现有行。

    另请注意,如果使用采用 DataTable 的 DataAdapter.Fill 重载,则将只填充该表。仍会将自动递增整数列添加到该表中,但不会创建或填充任何子表并且不会创建任何关系。

    以下示例使用 MSDataShape 提供程序为客户列表中的每个客户生成订单的章节列。然后使用相应数据来填充 DataSet。



    Using connection As OleDbConnection = New OleDbConnection( _
      
    "Provider=MSDataShape;Data Provider=SQLOLEDB;" & _
      
    "Data Source=(local);Integrated " & _
      
    "Security=SSPI;Initial Catalog=northwind")

    Dim adapter As OleDbDataAdapter = New OleDbDataAdapter( _
      
    "SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _
      
    "APPEND ({SELECT CustomerID, OrderID FROM Orders} AS Orders " & _
      
    "RELATE CustomerID TO CustomerID)", connection)

    Dim customers As DataSet = New DataSet()

    adapter.Fill(customers, 
    "Customers")
    End Using


     

    当 Fill 操作完成时,DataSet 将包含两个表:Customers 和 CustomersOrders,其中 CustomersOrders 表示章节列。另外一个名为 Orders 的列被添加到 Customers 表中,另外一个名为 CustomersOrders 的列被添加到 CustomersOrders 表中。Customers 表中的 Orders 列设置为自动递增。DataRelation CustomersOrders 使用添加到以 Customers 作为父表的表中的列创建。下表显示了一些示例结果。

    表名称:Customers
    CustomerID CompanyName Orders

    ALFKI

    Alfreds Futterkiste

    0

    ANATR

    Ana Trujillo Emparedados y helados

    1

    表名称:CustomersOrders
    CustomerID OrderID CustomersOrders

    ALFKI

    10643

    0

    ALFKI

    10692

    0

    ANATR

    10308

    1

    ANATR

    10625

    1

    http://msdn2.microsoft.com/zh-cn/library/bh8kx08z(VS.80).aspx

  • 相关阅读:
    Java内存泄漏的排查总结
    多文本匹配 AC算法(Aho-Corasick)
    Linux下进程管理利器—supervise(监控并将死掉的程序重启)
    maven pom项目的dependencies转gradle格式
    Protocol Buffers官方文档(开发指南)
    Spring的工具类StringUtils使用
    springboot2 中Druid和ibatis(baomidou) 遇到org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.iflytek.pandaai.service.multi.mapper.TanancyMapper
    gradle 多模块Springboot项目 compile project引用其他模块的坑
    JAVA 运行springboot jar包设置classpath
    mysql8
  • 原文地址:https://www.cnblogs.com/apiapia/p/875884.html
Copyright © 2020-2023  润新知