如何:将新记录插入数据库
更新:2007 年 11 月
若要将新记录插入数据库中,您可以使用 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 方法,则该表可能没有提供足够的架构信息以区分各行(例如,表中未设置主键)。
使用 TableAdapter 插入新记录
根据应用程序的需要,TableAdapter 提供了将新记录插入数据库的不同方法。
如果应用程序使用数据集存储数据,则可以完全将新记录添加到数据集中所需的 DataTable,然后调用 TableAdapter.Update 方法。TableAdapter.Update 方法得到 DataTable 中的所有更改,并将这些更改发送到数据库中(包括已修改的记录和删除的记录)。
使用 TableAdapter.Update 方法将新记录插入数据库
通过创建新的 DataRow 并将它添加到 Rows 集合中,可将新记录添加到所需的 DataTable 中。有关更多信息,请参见如何:向数据表中添加行。
将新行添加到 DataTable 后,请调用 TableAdapter.Update 方法。通过传入完整的 DataSet、DataTable、DataRow 数组或单个 DataRow,您可以控制要更新的数据量。
下面的代码显示如何将新记录添加到 DataTable 中,然后调用 TableAdapter.Update 方法将新行保存到数据库中。(此示例使用 Northwind 数据库的 Region 表。)
' Create a new row. Dim newRegionRow As NorthwindDataSet.RegionRow newRegionRow = Me.NorthwindDataSet._Region.NewRegionRow() newRegionRow.RegionID = 5 newRegionRow.RegionDescription = "NorthWestern" ' Add the row to the Region table Me.NorthwindDataSet._Region.Rows.Add(newRegionRow) ' Save the new row to the database Me.RegionTableAdapter.Update(Me.NorthwindDataSet._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 方法直接在数据库中创建新行。Insert 方法接受将每一列的单个值作为参数。调用此方法用传入的参数值将新记录插入到数据库。
以下过程使用 Northwind 数据库的 Region 表作为示例。
使用 TableAdapter.Insert 方法将新记录插入到数据库
调用 TableAdapter 的 Insert 方法,为每一列传入值作为参数。
说明: 如果没有实例可用,请实例化您要使用的 TableAdapter。
Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter.Insert(5, "NorthWestern")
NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = new NorthwindDataSetTableAdapters.RegionTableAdapter(); regionTableAdapter.Insert(5, "NorthWestern");
使用命令对象插入新记录
下面的示例使用命令对象直接将新记录插入到数据库。有关使用命令对象执行命令和存储过程的更多信息,请参见将数据获取到应用程序。
以下过程使用 Northwind 数据库的 Region 表作为示例。
使用命令对象将新记录插入到数据库
创建新的命令对象,并设置它的 Connection、CommandType 和 CommandText 属性。
Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING") Dim cmd As 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()
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();
安全性
您必须有访问正尝试连接到的数据库的权限,以及在所需表中执行插入的权限。