日期:2010-05-22  浏览次数:20403 次

  摘要:ADO.NET 中的数据集是一种在内存中表示数据的方法,它可以包含多个相关的数据表。本文介绍了在数据集中浏览这些相关数据表的方法。您将在 Visual Basic? .net 或 Visual C#? .NET 中创建一个 Windows? 应用程序,基于选定的记录返回相关记录,并使用表达式列为相关记录生成合计信息。本文包含一些指向英文站点的链接。

  简介

  由于数据集可以包含几个相关的表,因此了解如何在父记录和子记录之间进行浏览是一项基本任务,而这并非显而易见,特别是当您试图访问相关层次结构中的深层表中的数据时,更是如此。您还将学习如何浏览包含具有多对多关系的表的数据集,其中每个表都通过第三方表(中间表)彼此相关联。

  以下是本文所包含任务的概述:

  1、创建 Windows 应用程序项目。

  2、显示用作初始选定内容的数据列表。

  3、返回与选定记录相关的记录。

  4、浏览多个表和多个相关结构,并在运行时直接访问数据集中的数据。

  此外,本文还介绍一些相关的任务:

  1、为数据表添加基于相关数据的表达式列。

  2、生成相关数据的合计信息。

  前提条件

  要充分理解本文,您应该具有:

  ●基本的关系数据库概念的知识。

  ●与罗斯文示例数据库的有效连接,以便您能够创建和运行应用程序。

  ●大体上熟悉 ADO.NET 数据集。

  重要的数据对象

  要使用数据集中的相关记录,您应基本了解 .NET 框架 System.Data 命名空间中的几个对象以及它们如何相互作用。这些对象协同工作以提供数据集中的导航功能。

  以下对象用于表达数据集中的关系:

  ●DataSet - 在内存中表示数据,可以包含多个可与 DataRelation 对象相关的 DataTable 对象。

  ●DataTable - 表示一个完整的数据表。数据表的架构是由构成该表的 DataColumnCollection 定义的。当两个数据表相关时,DataRelation 对象使用每个表中的 DataColumn 来关联数据。

  ●DataRelation - 连接多个表,以便浏览相关表中的记录。访问相关记录时,DataRelation 对象被传递给 GetChildRows 或 GetParentRow 方法。DataRelation 对象确定所要查询的相关表,以便返回与 GetChildRows 或 GetParentRow 方法调用相关联的相关数据。

  ●DataRow - 表示数据的一个单独的记录。用于返回相关数据的 GetChildRows 方法和 GetParentRow 方法是 DataRow 对象的成员。

  ●DataColumn - 表示一个单独的字段,结合在一起时将定义 DataTable 的架构。当两个数据表相关时,DataRelation 对象使用每个表中的数据列来关联数据。

  创建应用程序

  本节将建立这一演练的起点。随后的步骤将创建数据连接、数据适配器和包含相关表的数据集,以及几个选择和显示数据的控件。

  创建新的 Windows 应用程序

  1、从 File(文件)菜单中,指向 New(新建),并选择 Project(项目)。将显示 New Project(新建项目)对话框。

  2、在 Project Types(项目类型)窗格中,根据您需要的编程语言,选择 Visual Basic Projects(Visual Basic 项目)或 Visual C# Projects(Visual C# 项目)。

  3、在 Templates(模板)窗格中,选择 Windows Application(Windows 应用程序),并将其命名为 DataRelationExample,然后单击 OK(确定)。

  DataRelationExample 项目将添加到 Solution Explorer(解决方案资源管理器)中。

  连接到数据库

  此连接允许您与 Visual Studio? 集成开发环境 (IDE) 中的数据源进行通讯。

  连接到 Server Explorer(服务器资源管理器)中的罗斯文示例数据库

  1、在 Server Explorer(服务器资源管理器)中,建立连接到罗斯文示例数据库的数据连接。

  2、在 Server Explorer(服务器资源管理器)中展开罗斯文数据连接,直到可以看到所有的表。

  创建数据适配器和连接

  此步骤创建用于在应用程序和数据源之间连接和交换数据的连接和数据适配器。

  创建数据适配器和连接

  1、将“客户”表从 Server Explorer(服务器资源管理器)中拖到窗体上。组件栏中将显示连接和数据适配器。

  2、选择 Connection(连接)并将 Name 属性设置为 dcNorthwind.

  3、选择数据适配器并将 Name 属性设置为 daCustomers.

  4、将“订单”表从 Server Explorer(服务器资源管理器)中拖到窗体上。组件栏中将显示第二个数据适配器。

  5、选择新的数据适配器并将 Name 属性设置为 daOrders.

  生成数据集

  使用刚刚添加到窗体上的数据适配器生成包含客户表和订单表的数据集。

  生成将包含相关数据表的数据集

  1、从 Data(数据)菜单中,选择 Generate Dataset(生成数据集)。将显示 Generate Dataset(生成数据集)对话框。

  提示:将光标移到窗体上即可使用 Data(数据)菜单。

  2、单击 New(新建)并将数据集命名为 dsNorthwind.

  3、选择客户表和订单表。

  4、选择 Add this dataset to the designer(将此数据集添加到设计器)复选框,然后单击 OK(确定)。

  Solution Explorer(解决方案资源管理器)的项目中将添加一个名为 dsNorthwind.xsd 的文件,并且组件栏中将显示该数据集的一个实例。

  创建关系

  生成数据集并不能自动创建数据集中各表之间的关系。关系可以通过编程创建,也可以使用 XML Designer(XML 设计器)直观地创建。本文使用 XML Designer(XML 设计器)。

  创建客户表和订单表之间的关系

  1、在 Solution Explorer(解决方案资源管理器)中,双击 dsNorthwind.xsd 文件。文件将在 XML Designer(XML 设计器)中打开。

  2、从工具栏的 XML Schema(XML 架构)选项卡中,将 Relation(关系)拖到订单表上。

  3、在 Edit Relation(编辑关系)对话框中,设置以下属性:

元素 设置
Name CustomersOrders
Parent  Customers
Child  Orders
Key Fields  CustomerID
Foreign Key Fields  CustomerID

  4、单击 OK(确定)以创建关系并关闭对话框。

  5、从 File(文件)菜单中,选择 Save All(全部保存)以保存该项目。

  显示数据

  此应用程序使用组合框、列表框和 RTF 文本框来选择和显示数据。

  添加选择和显示数据的控件

  1、在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1(。cs 或 .VB,取决于应用程序的语言),然后从快捷菜单中选择 View Designer(视图设计器)。

  2、在窗体的左半部,添加一个 ListBox 控件,并将其 Name 属性设置为 lbOrders.

  3、在窗体的右半部,添加一个 RichTextBox 控件,并将其 Name 属性设置为 rtbDetails.

  4、在列表框的上方,添加一个 C