在 .NET Framework 应用程序中创建和配置 TableAdapters

注释

此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。

TableAdapters 支持应用程序与数据库之间的通信。 它们连接到数据库、运行查询或存储过程,并返回新的数据表,或者使用返回的数据填充现有 DataTable 类实例。 TableAdapters 还可以将更新的数据从应用程序发送回数据库。

执行以下操作之一时,将创建 TableAdapters:

  • 将数据库对象从 服务器资源管理器 拖到 数据集设计器中。

  • TableAdapter 对象从 工具箱 拖到 数据集设计器 图面中的空区域,然后配置数据源。

  • 运行 数据源配置向导,然后选择 数据库Web 服务 数据源类型:

    显示如何在 Visual Studio 的“数据源配置向导”中选择数据源类型的屏幕截图。

有关 TableAdapters 的简介,请参阅 使用 TableAdapters 填充数据集

先决条件

若要完成本文中的过程,必须满足以下先决条件:

注释

本文中的说明说明了 Visual Studio 中提供的交互式开发体验(IDE)的最新版本。 您的计算机可能会显示某些用户界面元素的不同名称或位置。 你可能使用的是不同版本的 Visual Studio 或不同的环境设置。 有关详细信息,请参阅个性化设置 IDE

访问 TableAdapter 配置向导

可以使用 TableAdapter 配置向导创建新的 TableAdapters 或编辑现有实例,并配置其关联的数据表。

  • 若要使用向导配置现有的 TableAdapter,请右键单击 数据集设计器 中的 TableAdapter 实例,然后选择“ 配置

    显示如何在 Visual Studio 中访问表适配器配置向导的屏幕截图。

  • 若要使用向导创建新的 TableAdapter,请将 TableAdapter 对象从 工具箱 拖动到 数据集设计器 图面中的空区域。

使用向导

对于 TableAdapter 配置,TableAdapter 配置向导 将指导你完成以下任务:

  1. 为 TableAdapter 配置所需的设置。

    • 指定 TableAdapter 连接的数据源类型。

    • 确定用于与数据库(SQL 语句或存储过程)通信的命令。 如果 TableAdapter 已与数据源关联,则向导中看不到此选项。

  2. 根据需要创建存储过程。

    如果你有数据库的正确权限,请在基础数据库中创建新的存储过程。 如果没有必要的权限,则此选项在向导中不可用。

  3. 根据需要运行现有的存储过程。

    过程适用于 TableAdapter 的 SELECTINSERTUPDATEDELETE 命令。 例如,分配给 UPDATE 命令的存储过程将在您调用 TableAdapter.Update() 方法时运行。

  4. 将所选存储过程中的参数映射到数据表中的相应列。 例如,如果存储过程接受名为@CompanyName它传递给CompanyName数据表中的列的参数,请将@CompanyName参数的源列设置为 CompanyName

    注释

    对于 SELECT 命令,存储过程在默认情况下调用 TableAdapter Fill 方法时运行。 在向导的后续页面中 指定 Fill() 方法的名称 。 使用默认方法时,运行 SELECT 命令存储过程的典型代码为 TableAdapter.Fill(<TableName>)。 你需要将 <TableName> 部分替换为数据表的名称。

    如果更改 Fill默认方法名称,则需要更新过程的代码。 将 Fill 替换为新方法名称,并使用 TableAdapter 的实际名称。 例如,对于名为CustomersTableAdapter的 TableAdapter 和名为CustomersTable的数据表,如果将方法名称Fill更改为AddData,请将代码更新为CustomersTableAdapter.AddData(CustomersTable)

    • 选择是否启用 Create 方法以将更新直接发送到数据库 选项。 启用此选项后,它等效于将 GenerateDBDirectMethods 属性设置为 true。 当原始 SQL 语句未提供足够的信息或查询不是可更新的查询时,此选项不可用。 例如,当 JOIN 查询和其他查询返回单个(标量)值时。
  5. 高级选项配置首选项。

    • 根据“生成 SQL 语句”页上定义的 SELECT 命令生成 INSERTUPDATEDELETE 命令。

    • 使用开放式并发。

    • 在 INSERTUPDATE 命令运行后刷新数据表。

配置 TableAdapter.Fill() 方法

在某些情况下,可能需要更改 TableAdapter 数据表的架构。 若要完成该操作,请更改或更新 TableAdapter 的主要 Fill 方法。 TableAdapters 是使用定义关联数据表架构的主要 Fill 方法创建的。 主要 Fill 方法基于最初配置 TableAdapter 时输入的查询或存储过程。 它是 数据集设计器中数据表下的第一个(最顶层)方法。

图示如何使用 TableAdapter 进行多个查询。

对 TableAdapter 主 Fill 方法所做的任何更改都反映在关联数据表的架构中。 例如,在 main Fill 方法中删除查询中的列也会从关联的数据表中删除该列。 此外,从主要 Fill 方法中删除该列会将该 TableAdapter 的任何附加查询的该列删除。

可以使用 TableAdapter 查询配置向导 为 TableAdapter 创建和编辑其他查询。 这些附加查询必须符合表架构,除非它们返回标量值。 每个附加查询都有一个指定的名称。

以下示例演示如何调用名为 FillByCity 的其他查询:

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

使用向导创建查询

可以按照以下步骤使用 TableAdapter 查询配置向导创建新查询

  1. 数据集设计器中打开数据集。

  2. 通过以下任一操作创建新查询:

    • 数据集设计器中,右键单击 TableAdapter 并选择 “添加查询”。
    • Query工具箱“数据集”选项卡中的对象拖到DataTable数据集设计器图面中。
    • Query对象从工具箱拖到数据集设计器图面中的空区域,以创建一个未关联DataTable的TableAdapter。

    这些查询只能返回单个(标量)值,也可以针对数据库运行 UPDATEINSERTDELETE 命令。

  3. 在“ 选择数据连接 ”屏幕上,选择现有连接或为查询创建新连接。

    注释

    仅当设计器无法确定要使用的连接或没有可用的连接时,才会显示此屏幕。

  4. “选择命令类型” 界面上,通过选择以下用于从数据库提取数据的方法来配置命令:

    • 使用 SQL 语句:输入 SQL 语句以从数据库选择数据。

    • 创建新的存储过程:向导基于指定的 SELECT 命令创建新的存储过程(在数据库中)。

    • 使用现有存储过程:运行查询时执行现有存储过程。

使用向导配置查询

若要使用 TableAdapter 查询配置向导编辑现有的 TableAdapter 查询,请右键单击该查询,然后选择“ 配置”。 根据所选查询类型,右键单击会产生不同的结果。

  • 对于 TableAdapter 的主查询,会重新配置 TableAdapter 和 DataTable 架构。

  • 在 TableAdapter 上进行附加查询时,仅重新配置所选查询。

TableAdapter 配置向导重新配置 TableAdapter 定义,而 TableAdapter 查询配置向导仅重新配置所选查询。

向 TableAdapter 添加全局查询

全局查询是返回单个(标量)值或不返回值的 SQL 查询。 通常,全局函数执行数据库作,例如插入、更新和删除。 他们还聚合信息,例如表中的客户计数或特定订单中所有项目的总费用。

  1. 通过将对象从工具箱“数据集”选项卡拖动Query数据集设计器图面中的空区域来添加全局查询。

  2. 输入执行特定任务的查询,例如 SELECT COUNT(*) AS CustomerCount FROM Customers

    注释

    Query 对象直接拖动到 数据集设计器 图面上将创建一个仅返回标量值(单个)值的方法。 虽然所选的查询或存储过程可能返回多个值,但向导创建的方法仅返回单个值。 例如,查询可能会返回返回的数据的第一行的第一列。