如何:创建和执行不返回值的 SQL 语句

若要执行不返回任何值的 SQL 语句,可以运行配置为运行 SQL 语句的 TableAdapter 查询(如 CustomersTableAdapter.UpdateTableData(CustomersDataTable))。

如果应用程序不使用 TableAdapter,请调用命令对象上的 ExecuteNonQuery 方法,将其 CommandType 属性设置为 Text。 (“命令对象”是指您的应用程序正在使用的 .NET Framework 数据提供程序的特定命令。https://msdn.microsoft.com/zh-cn/library/a6cd7c08(v=vs.120) 例如,如果应用程序使用的是用于 SQL Server 的 .NET Framework 数据提供程序,则该命令对象为 SqlCommand。)

下面的示例演示如何使用 TableAdapter 或命令对象执行不从数据库返回值的 SQL 语句。 有关使用 TableAdapter 和命令进行查询的更多信息,请参见 用数据填充数据集

使用 TableAdapter 执行不返回值的 SQL 语句

此示例演示如何使用 TableAdapter 查询配置向导 创建 TableAdapter 查询,然后提供有关如何声明 TableAdapter 的实例并执行查询的信息。

备注

以下说明中的某些 Visual Studio 用户界面元素在你计算机上的名称或显示位置可能有所不同。这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。有关详细信息,请参阅 在 Visual Studio 中自定义开发设置

使用 TableAdapter 创建不返回值的 SQL 语句

  1. 在**“数据集设计器”**中打开一个数据集。 有关更多信息,请参见如何:在数据集设计器中打开数据集

  2. 如果还没有 TableAdapter,请创建一个。 有关创建 TableAdapter 的更多信息,请参见 如何:创建 TableAdapter

  3. 如果 TableAdapter 上已有一个使用不返回值的 SQL 语句的查询,则跳到下一过程“声明 TableAdapter 的实例并执行该查询”。否则,继续执行步骤 4 以创建不返回值的新查询。

  4. 右击所需的 TableAdapter,然后使用快捷菜单添加查询。

    **“TableAdapter 查询配置向导”**将打开。

  5. 保留**“使用 SQL 语句”的默认值,然后单击“下一步”**。

  6. 选择**“UPDATE”“INSERT”“DELETE”选项,然后单击“下一步”**。

  7. 键入 SQL 语句,或借助**“查询生成器”创建一条 SQL 语句,然后单击“下一步”**。

  8. 为该查询提供名称。

  9. 完成向导;该查询即被添加到 TableAdapter。

  10. 生成您的项目。

声明 TableAdapter 的实例并执行查询

  1. 声明一个 TableAdapter 实例,该实例包含要执行的查询。

    • 若要使用设计时工具创建实例,请从**“工具箱”拖动所需的 TableAdapter。 (现在,项目中的组件将出现在“工具箱”中,位于与项目名称匹配的标题下。)如果“工具箱”**中没有出现 TableAdapter,则可能需要生成您的项目。

      - 或 -

    • 要在代码中创建实例,请使用您的 DataSet 和 TableAdapter 的名称替换下面的代码。

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      备注

      TableAdapter 实际上并不在其关联数据集类内。每个数据集在其各自命名空间中均有一个相应的 TableAdapter 集合。例如,如果有一个名为 SalesDataSet 的数据集,就会有一个包含其 TableAdapter 的 SalesDataSetTableAdapters 命名空间。

  2. 请按照在代码中调用任何其他方法的方式调用查询。 查询是 TableAdapter 上的一个方法。 用您的 TableAdapter 和查询的名称替换下面的代码。 您还需要传入查询所需的任何参数。 如果不能确定查询是否需要参数,或者需要什么参数,请通过 IntelliSense 查看该查询所需的签名。 根据查询是否带有参数,代码可能会类似于以下示例之一:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    我们认为不返回值的查询实际上返回一个值;即一个整数,其中包含受查询影响的行数。 声明 TableAdapter 实例并执行查询的完整代码应与下面的内容类似:

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    
    Dim rowsAffected As Integer
    rowsAffected = CType(tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI"), Integer)
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    int rowsAffected = tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI");
    

使用命令对象执行不返回值的 SQL 语句

下面的示例演示如何创建命令并执行不返回值的 SQL 语句。 有关设置和获取命令参数值的信息,请参见 如何:设置和获取命令对象的参数

此示例使用 SqlCommand 对象并且需要:

  • SystemSystem.DataSystem.Xml 命名空间的引用。

  • 名为 SqlConnection1 的数据连接。

  • SqlConnection1 所连接到的数据源中名为 Customers 的表。 (否则,您需要一条对您的数据源有效的 SQL 语句。)

使用 DataCommand 执行不返回值的 SQL 语句

  • 将下面的代码添加到要用于执行该 SQL 语句的方法中。 调用命令的 ExecuteNonQuery 方法(例如 SqlCommand.ExecuteNonQuery)以便不返回值。

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim rowsAffected As Integer
    
    cmd.CommandText = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'"
    cmd.CommandType = CommandType.Text
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    rowsAffected = cmd.ExecuteNonQuery()
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    Int32 rowsAffected;
    
    cmd.CommandText = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    rowsAffected = cmd.ExecuteNonQuery();
    
    sqlConnection1.Close();
    

安全性

此应用程序要求访问数据库和执行 SQL 语句的权限。

请参见

任务

如何:创建 TableAdapter 查询

如何:编辑 TableAdapter 查询

如何:使用数据填充数据集

如何:设置和获取命令对象的参数

参考

SqlCommand.ExecuteNonQuery

OleDbCommand.ExecuteNonQuery

OdbcCommand.ExecuteNonQuery

OracleCommand.ExecuteNonQuery

概念

用数据填充数据集