作者对于ADO类理解与看法
创始人
2024-06-18 06:30:17
0

下面介绍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 表中记录的子集。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...