如何:将新记录插入数据库

更新: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 方法将新记录插入数据库

  1. 通过创建新的 DataRow 并将它添加到 Rows 集合中,可将新记录添加到所需的 DataTable 中。有关更多信息,请参见如何:向数据表中添加行

  2. 将新行添加到 DataTable 后,请调用 TableAdapter.Update 方法。通过传入完整的 DataSetDataTableDataRow 数组或单个 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();
    

安全性

您必须有访问正尝试连接到的数据库的权限,以及在所需表中执行插入的权限。

请参见

任务

如何:删除数据库中的记录

如何:更新数据库中的记录

如何:将数据从对象保存到数据库

其他资源

数据访问入门

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在 Windows 应用程序中的窗体上显示数据

在应用程序中编辑数据

验证数据

保存数据