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

注释

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

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

注释

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

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

  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");
    }