在 .NET Framework 应用程序中使用 TableAdapter 更新数据

注意

数据集和相关类是 2000 年代初的旧 .NET Framework 技术,使应用程序能够在应用程序与数据库断开连接时处理内存中的数据。 它们对于使用户能够修改数据并持续更改回数据库的应用程序特别有用。 虽然数据集已被证明是一项非常成功的技术,但我们建议新的 .NET 应用程序使用 Entity Framework Core。 实体框架提供了一种更自然的方式来将表格数据作为对象模型,并且具有更简单的编程接口。

在修改并验证数据集中的数据之后,可通过调用 TableAdapterUpdate 方法将更新后的数据发送回数据库。 Update 方法更新单个数据表,并基于表中每个数据行的 INSERT 运行正确的命令(UPDATEDELETERowState)。 如果数据集具有相关表,Visual Studio 会生成一个 TableAdapterManager 类,用于执行更新。 TableAdapterManager 类可确保根据数据库中定义的外键约束以正确的顺序进行更新。 如果使用数据绑定控件,数据绑定体系结构会创建 TableAdapterManager 类的成员变量(名为 tableAdapterManager)。

备注

如果尝试使用数据集的内容更新数据源,可能会收到错误。 为了避免错误,建议将用于调用适配器 Update 方法的代码放在 try/catch 块中。

具体的数据源更新过程可能因业务需求而异,但包括以下步骤:

  1. 调用 try/catch 块中适配器的 Update 方法。

  2. 如果捕获到异常,请找到导致该错误的数据行。

  3. 协调数据行中的问题(如果可以,可通过编程方式,也可向用户显示无效的行以让其修改),然后再次尝试更新(HasErrorsGetErrors)。

将数据保存到数据库

调用 TableAdapter 的 Update 方法。 传递数据表(包含要写入数据库的值)的名称。

使用 TableAdapter 更新数据库

  • 将 TableAdapter 的 Update 方法放入 try/catch 块中。 以下示例演示如何从 try/catch 块中更新 NorthwindDataSetCustomers 表的内容。

    try
    {
        this.Validate();
        this.customersBindingSource.EndEdit();
        this.customersTableAdapter.Update(this.northwindDataSet.Customers);
        MessageBox.Show("Update successful");
    }
    catch (System.Exception ex)
    {
        MessageBox.Show("Update failed");
    }