作者对于ADO类理解与看法

开发 后端
下面进行着重介绍有关ADO类该扩展示例还将返回 OrderDetails 表和 Products 表中的值。ADO类表使用 OrderID 与 OrderDetails 表相关联,

下面介绍ADO类的四种有关介绍和方法,将四个表关联在一起,并浏览这些关系。 如上例所示,CustomerID 使 Customers 表与 Orders 表相关联。 对于 Customers 表中的每个客户。

以返回特定客户的订单数以及他们的 由于 OrderDetails 表只包含已订购产品的 ProductID,OrderDetails 将使用 ProductID 与 Products 相关联,以返回 ProductName。 在这一关系中,Products 表为父表,而 Order Details 表为子表。 因此,当循环访问 OrderDetails 表时,将调用 GetParentRow 来检索相关的 ProductName 值。请注意,当为 Customers 表和 Orders 表创建 DataRelation 时,ADO类没有为 createConstraints 标志指定任何值(默认为 true)。

它假定 Orders 表中的所有行都具有一个存在于父 Customers 表中的 CustomerID 值。 如果 CustomerID 存在于 Customers 表之外的 Orders 表中,则 ForeignKeyConstraint 将引发异常。如果子列可能包含父列不包含的值,添加 DataRelation 时请将 createConstraints 标志设置为 false。 在该示例中,ADO类对于 Orders 表和 OrderDetails 表之间的 DataRelation,createConstraints 标志将设置为 false。 这样,应用程序就可以返回 OrderDetails 表中的所有记录并只返回 Orders 表中记录的子集,而不会生成运行时异常。 该扩展示例生成以下格式的输出。

  1. DataRelationcustomerOrdersRelation=  
  2. customerOrders.Relations.Add("CustOrders",  
  3. customerOrders.Tables["Customers"].Columns["CustomerID"],  
  4. customerOrders.Tables["Orders"].Columns["CustomerID"]);  
  5.  
  6. DataRelationorderDetailRelation=  
  7. customerOrders.Relations.Add("OrderDetail",  
  8. customerOrders.Tables["Orders"].Columns["OrderID"],  
  9. customerOrders.Tables["OrderDetails"].Columns["OrderID"],false);  
  10.  
  11. DataRelationorderProductRelation=  
  12. customerOrders.Relations.Add("OrderProducts",  
  13. customerOrders.Tables["Products"].Columns["ProductID"],  
  14. customerOrders.Tables["OrderDetails"].Columns["ProductID"]);  
  15.  
  16. foreach(DataRowcustRowincustomerOrders.Tables["Customers"].Rows)  
  17. {  
  18. Console.WriteLine("CustomerID:"+custRow["CustomerID"]);  
  19.  
  20. foreach(DataRoworderRowincustRow.GetChildRows(customerOrdersRelation))  
  21. {  
  22. Console.WriteLine("OrderID:"+orderRow["OrderID"]);  
  23. Console.WriteLine("\tOrderDate:"+orderRow["OrderDate"]);  
  24.  
  25. foreach(DataRowdetailRowinorderRow.GetChildRows(orderDetailRelation))  
  26. {  
  27. Console.WriteLine("\tProduct:"+  
  28. detailRow.GetParentRow(orderProductRelation)["ProductName"]);  
  29. Console.WriteLine("\tQuantity:"+detailRow["Quantity"]);  
  30. }  

以上代码示例是一个扩展示例,ADO类在该示例中将返回 OrderDetails 表和 Products 表中的值,并只返回 Orders 表中记录的子集。

责任编辑:chenqingxiang 来源: JavaEye博客
相关推荐

2009-11-25 13:35:05

VS2003使用

2009-11-30 10:34:28

VS2003编译

2009-11-26 08:57:01

VS2003发布

2009-12-23 09:32:26

ADO.NET数据对象

2009-12-18 17:25:21

ADO.NET类库

2009-12-24 15:42:01

ADO类库

2009-12-22 14:05:33

ADO.NET代码

2009-12-01 18:50:57

Visual Stud

2009-07-02 09:25:15

选择Hibernate

2009-11-26 11:05:59

VS2003控件

2015-07-02 13:26:35

分布式存储云存储云平台

2009-12-25 14:34:59

ADO帮助文档

2009-12-24 15:51:34

ADO属性

2009-12-22 15:08:46

ADO控件

2009-12-25 17:32:16

ADO Data 控件

2009-12-21 16:53:06

ADO.NET使用说明

2009-12-25 15:38:12

ADO连接池

2009-12-28 13:32:19

ADO 添加记录

2009-12-23 16:43:34

ADO.NET模型

2009-12-23 17:54:01

ADO.NET 2.0
点赞
收藏

51CTO技术栈公众号