在 .NET Framework 应用程序中使用 TableAdapter DBDirect 方法保存数据

注释

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

本教程详细说明了如何使用 TableAdapter 的 DBDirect 方法直接针对数据库运行 SQL 语句。 TableAdapter 的 DBDirect 方法提供对数据库更新的精细控制级别。 可以通过调用应用程序所需的单个InsertUpdateDelete方法来运行特定的SQL语句和存储过程(而不是调用重载的Update方法,该方法在一次调用中执行UPDATEINSERTDELETE语句)。

在本教程中,你将了解如何:

  • 使用 数据源配置向导创建和配置数据集。

  • “数据源 ”窗口中拖动项目时,选择要在窗体上创建的控件。 有关详细信息,请参阅设置从 数据源窗口拖动时要创建的控件

  • 通过将某些项从“数据源”窗口拖到窗体上来创建数据绑定窗体

  • 添加方法以直接访问数据库并执行插入、更新和删除。

先决条件

本教程中的步骤适用于 .NET Framework Windows 窗体应用程序。

本教程使用 SQL Server Express LocalDB 和 Northwind 示例数据库。

  1. 如果没有 SQL Server Express LocalDB,请从 SQL Server Express 下载页或通过 Visual Studio 安装程序安装它。 在 Visual Studio 安装程序中,可以将 SQL Server Express LocalDB 作为 数据存储和处理 工作负荷的一部分或作为单个组件安装。

  2. 按照以下步骤安装 Northwind 示例数据库:

    1. 在 Visual Studio 中,打开 SQL Server 对象资源管理器 窗口。 (SQL Server 对象资源管理器作为数据存储和处理工作负荷的一部分安装在 Visual Studio 安装程序中。)展开“SQL Server”节点。 右键单击 LocalDB 实例并选择“新建查询”

      此时会打开查询编辑器窗口。

    2. Northwind Transact-SQL 脚本 复制到剪贴板。 此 T-SQL 脚本从头开始创建 Northwind 数据库,并使用数据填充该数据库。

    3. 将 T-SQL 脚本粘贴到查询编辑器中,然后选择 “执行” 按钮。

      短时间后,查询将完成运行并创建 Northwind 数据库。

创建 Windows 窗体应用程序

第一步是创建 Windows 窗体应用(.NET Framework)。 使用 C# 或 Visual Basic 使用 Windows 窗体应用 项目类型创建项目。

注释

本教程的代码在 C# 和 Visual Basic 中提供。 若要在此页面上在 C# 和 Visual Basic 之间切换代码语言,请使用右侧页面顶部的代码语言切换器。

从数据库创建数据源

此步骤使用 数据源配置向导 基于 Northwind 示例数据库中的 Region 表创建数据源。 必须有权访问 Northwind 示例数据库才能创建连接。 有关设置 Northwind 示例数据库的信息,请参阅 如何:安装示例数据库

创建数据源

  1. “数据 ”菜单上,选择“ 显示数据源”。

    此时会打开 “数据源 ”窗口。

  2. “数据源 ”窗口中,选择“ 添加新数据源 ”以启动 数据源配置向导

  3. 在“ 选择数据源类型” 屏幕上,选择“ 数据库”,然后选择“ 下一步”。

  4. “选择数据连接 ”屏幕上,执行下列作之一:

    • 如果下拉列表中提供了与 Northwind 示例数据库的数据连接,请选择它。

      -或-

    • 选择 “新建连接 ”以启动 “添加/修改连接 ”对话框。

  5. 如果数据库需要密码,请选择包含敏感数据的选项,然后选择“ 下一步”。

  6. “将连接字符串保存到应用程序配置文件 ”屏幕上,选择“ 下一步”。

  7. “选择数据库对象 ”屏幕上,展开 “表” 节点。

  8. 选择Region表,然后选择“完成”。

    NorthwindDataSet 将添加到项目中,表Region将显示在“数据源”窗口中。

向窗体添加控件以显示数据

通过将某些项从“数据源”窗口拖到窗体上来创建数据绑定控件

若要在 Windows 窗体上创建数据绑定控件,请将主区域节点从“数据源窗口拖到窗体上。

用于导航记录的 DataGridView 控件和工具栏(BindingNavigator)将显示在窗体上。 NorthwindDataSetRegionTableAdapterBindingSourceBindingNavigator出现在组件托盘中。

添加调用各个 TableAdapter DbDirect 方法的按钮

  1. 工具箱中的三个Button控件拖到 Form1RegionDataGridView 下方)。

  2. 在每个按钮上设置以下名称和文本属性。

    名称 文本
    InsertButton 插入
    UpdateButton 更新
    DeleteButton 删除

添加代码以将新记录插入数据库

  1. 选择“InsertButton”以创建 Click 事件的事件处理程序,并在代码编辑器中打开窗体

  2. InsertButton_Click 事件处理程序替换为以下代码:

    private void InsertButton_Click(object sender, EventArgs e)
    {
        Int32 newRegionID = 5;
        String newRegionDescription = "NorthEastern";
    
        try
        {
            regionTableAdapter1.Insert(newRegionID, newRegionDescription);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Insert Failed");
        }
        RefreshDataset();
    }
    
    
    private void RefreshDataset()
    {
        this.regionTableAdapter1.Fill(this.northwindDataSet1.Region);
    }
    

    注释

    根据您所使用的 Visual Studio 版本和项目模板,此代码中使用的变量名称如regionTableAdapterregionTableAdapter1在生成的代码中可能会有也可能不会有一个尾随的 1。 在代码中进行任何更正,以确保随处使用正确的名称。 Visual Studio 会在名称不正确的位置显示红色波浪线。

添加代码以更新数据库中的记录

  1. 双击“UpdateButton”以创建 Click 事件的事件处理程序,并在代码编辑器中打开窗体

  2. UpdateButton_Click 事件处理程序替换为以下代码:

    private void UpdateButton_Click(object sender, EventArgs e)
    {
        Int32 newRegionID = 5;
        
        try
        {
            regionTableAdapter1.Update(newRegionID, "Updated Region Description", 5, "NorthEastern");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Update Failed");
        }
        RefreshDataset();
    }
    

添加代码以从数据库中删除记录

  1. 选择“DeleteButton”以创建 Click 事件的事件处理程序,并在代码编辑器中打开窗体

  2. DeleteButton_Click 事件处理程序替换为以下代码:

    private void DeleteButton_Click(object sender, EventArgs e)
    {
        try
        {
            regionTableAdapter1.Delete(5, "Updated Region Description");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Delete Failed");
        }
        RefreshDataset();
    }
    

运行应用程序

  • 选择 F5 以运行应用程序。

  • 选择 “插入 ”按钮,并验证新记录是否显示在网格中。

  • 选择 “更新 ”按钮,并验证记录是否已在网格中更新。

  • 选择“ 删除 ”按钮,并验证记录是否已从网格中删除。

后续步骤

根据应用程序要求,在创建数据绑定表单后,可能需要执行几个步骤。 你可以对本教程进行一些改进,包括:

  • 向窗体添加搜索功能。

  • 通过从“数据源”窗口中选择“使用向导配置数据集”,将其他表添加到数据集。 可以通过将相关节点拖动到窗体上来添加显示相关数据的控件。 有关详细信息,请参阅 数据集中的关系