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

注意

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

若要通过 .NET Framework 项目中的 ADO.NET 将新记录插入数据库,可以使用 TableAdapter.Update 方法或 TableAdapter 的 DBDirect 方法之一(特别是 TableAdapter.Insert 方法)。 有关详细信息,请参阅 TableAdapter

如果应用程序不使用 TableAdapters,你可以使用命令对象(例如 SqlCommand)将新记录插入数据库。

如果应用程序使用数据集来存储数据,请使用 TableAdapter.Update 方法。 Update 方法将所有更改(更新、插入和删除)发送到数据库。

如果应用程序使用对象来存储数据,或者你想要更精细地控制如何在数据库中新建记录,请使用 TableAdapter.Insert 方法。

如果 TableAdapter 没有 Insert 方法,则意味着 TableAdapter 配置为使用存储过程或其 GenerateDBDirectMethods 属性设置为 false。 尝试在数据集设计器中将 TableAdapter 的 GenerateDBDirectMethods 属性设置为 true,然后保存数据集。 此操作将重新生成 TableAdapter。 如果 TableAdapter 仍然没有 Insert 方法,则表可能没有提供足够的架构信息来区分各个行(例如,表上可能没有设置主键)。

备注

本文适用于 ADO.NET 和 .NET Framework 开发。 有关 Entity Framework 6 的同一任务,请参阅将新实体添加到上下文中。 有关 Entity Framework Core 的信息,请参阅添加数据

使用 TableAdapters 插入新记录

根据应用程序的需求,TableAdapter 提供了将新记录插入数据库的不同方法。

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

使用 TableAdapter.Update 方法将新记录插入数据库

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

  2. 将新行添加到 DataTable 后,调用 TableAdapter.Update 方法。 可以通过传入整个 DataSetDataTableDataRow 数组或单个 DataRow 来控制要更新的数据量。

    以下代码显示如何向 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();

.NET 安全性

你必须有权访问尝试连接的数据库,且有权对所需表执行插入操作。