在 .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 方法将新记录插入数据库
将新行添加到 DataTable 后,调用
TableAdapter.Update
方法。 可以通过传入整个 DataSet、DataTable、DataRow 数组或单个 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");
使用命令对象插入新记录
可以使用命令对象将新记录直接插入数据库。
使用命令对象将新记录插入数据库
- 新建命令对象,然后设置其
Connection
、CommandType
和CommandText
属性。
以下示例演示如何使用命令对象将记录插入数据库。 该示例将数据插入 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 安全性
你必须有权访问尝试连接的数据库,且有权对所需表执行插入操作。