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

注意

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

本教程详细介绍如何使用 TableAdapter 的 DBDirect 方法直接对数据库运行 SQL 语句。 TableAdapter 的 DBDirect 方法可对数据库更新进行精确的控制。 可以使用它们通过调用应用程序所需的单个 InsertUpdateDelete 方法来运行特定的 SQL 语句和存储过程(而不是在一次调用中执行全部 UpdateUPDATEINSERT 语句的重载的 DELETE 方法)。

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

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

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

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

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

先决条件

本教程中的步骤适用于 .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 对象资源管理器”窗口。 (在 Visual Studio 安装程序中 SQL Server 对象资源管理器作为数据存储和处理工作负载的一部分安装。)展开 SQL Server 节点 。 右键单击 LocalDB 实例并选择“新建查询”。

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

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

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

      不久后,查询完成运行并且 Northwind 数据库创建完成。

创建 Windows 窗体应用程序

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

备注

本教程的代码提供 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 控件从“工具箱”拖到“Form1”上(在“RegionDataGridView”的下面)

  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,也可能没有尾随 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 运行该应用程序。

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

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

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

后续步骤

根据应用程序的需求,创建数据绑定窗体后,还需要执行一些步骤。 你可以对本教程进行一些改进,包括:

  • 将搜索功能添加到该窗体。

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