在 .NET Framework 应用程序中将新记录插入数据库

若要将新记录插入 .NET Framework 项目中具有 ADO.NET 的数据库,常见方法是使用 TableAdapter 方法。 TableAdapters 支持应用程序与数据库之间的通信。 根据应用程序的要求,它们提供了将新记录插入数据库的不同方法。 你可以使用方法 TableAdapter.Update 或 TableAdapter DBDirect 方法之一(特别是 TableAdapter.Insert 方法)。

本文介绍如何使用 Visual Basic (VB) 或 C# 将记录插入到使用 ADO.NET 和 .NET Framework 生成的应用程序的数据库中。 如果应用程序配置使用 Entity Framework 6,请参阅向上下文添加新实体;或者对于 Entity Framework Core,请参阅添加数据

注意

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

先决条件

选择插入方法

根据应用程序方案,有不同的方法将记录插入数据库。 下表总结了选项:

场景 方法 备注
应用程序使用数据集存储数据 使用 TableAdapter.Update 方法将所有更改发送到数据库 更改包括更新、插入和删除。
应用使用对象存储数据 使用 TableAdapter.Insert 方法将新记录插入数据库 这种方法使你能够更好地控制创建新记录。
应用使用 TableAdapters,Insert 方法不可用 数据集设计器中将 TableAdapter GenerateDBDirectMethods 属性设置为 true,并保存数据集,以重新生成 TableAdapter 如果 TableAdapter 没有 Insert 方法,则 TableAdapter 配置为使用存储过程,或者将 GenerateDBDirectMethods 属性设置为 false
如果在重新生成 TableAdapter 后方法 Insert 仍然不可用,则表可能没有提供足够的架构信息来区分各个行((例如,表上可能没有主键集)。
应用不使用 TableAdapters 使用命令对象将新记录插入数据库 示例: SqlCommand

使用 TableAdapters 插入新记录

如果应用程序使用数据集来存储数据,你可以将新记录添加到数据集中所需的 DataTable,然后调用 TableAdapter.Update 方法。 TableAdapter.Update 方法将 DataTable 中的所有更改发送到数据库(包括修改和删除的记录)。

使用 TableAdapter.Update 方法插入新记录

以下过程演示如何使用 TableAdapter.Update 方法将新记录插入数据库中:

  1. 通过新建 DataRow 并将其添加到 Rows 集合,将新记录添加到所需的 DataTable

  2. 将新行添加到 DataTable 后,调用 TableAdapter.Update 方法。 可以通过传递以下参数值之一来控制要更新的数据量:

    以下代码显示如何向 DataTable 添加新记录,然后调用 TableAdapter.Update 方法将新行保存到数据库。 该示例使用 Northwind 数据库中的 Region 表。

    // Create a new row.
    NorthwindDataSet.RegionRow newRegionRow;
    newRegionRow = northwindDataSet.Region.NewRegionRow();
    newRegionRow.RegionID = 5;
    newRegionRow.RegionDescription = "NorthWestern";
    
    // Add the row to the Region table
    this.northwindDataSet.Region.Rows.Add(newRegionRow);
    
    // Save the new row to the database
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

使用 TableAdapter.Insert 方法插入新记录

如果应用程序使用对象来存储数据,可以使用 TableAdapter.Insert 方法直接在数据库中新建行。 Insert 方法可接受每列的各个值作为参数。 当你调用该方法时,一条新记录将与传递的参数值一起插入数据库。

  • 调用 TableAdapter 的 Insert 方法,并将每列的值作为参数传递。

以下过程演示如何使用 TableAdapter.Insert 方法插入行。 本示例将数据插入 Northwind 数据库的 Region 表。

注意

如果没有可用的实例,请实例化要使用的 TableAdapter。

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
    new NorthwindDataSetTableAdapters.RegionTableAdapter();

regionTableAdapter.Insert(5, "NorthWestern");

使用命令对象插入新记录

可以使用命令对象将新记录直接插入到数据库中。

  • 新建命令对象,然后设置其 ConnectionCommandTypeCommandText 属性。

以下过程演示了如何使用命令对象将记录插入数据库。 此示例将数据插入 Northwind 数据库的 Region 表中。

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();