在 .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,请参阅添加数据

注释

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

先决条件

选择插入方法

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

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

使用 TableAdapters 插入新记录

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

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

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

  1. 将新记录添加到Rows集合中,方法是创建一个新的DataRow并将其添加到所需的DataTable中。

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

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

    // 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属性。

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

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();