SqlCommand.ExecuteNonQuery 方法

定义

对连接执行 Transact-SQL 语句并返回受影响的行数。

public:
 override int ExecuteNonQuery();
public override int ExecuteNonQuery ();
override this.ExecuteNonQuery : unit -> int
Public Overrides Function ExecuteNonQuery () As Integer

返回

受影响的行数。

例外

SqlDbType当 设置为 StreamValue,使用 BinaryVarBinary 以外的 。 有关流式处理的详细信息,请参阅 SqlClient 流支持

- 或 -

SqlDbType设置为 时ValueTextReader ,使用了 CharNCharNVarCharVarCharXml 以外的其他项。

-或-

SqlDbType设置为 时ValueXmlReader ,使用了 Xml 以外的 。

对锁定的行执行命令时出现异常。 当使用 Microsoft .NET Framework 1.0 版时不生成此异常。

- 或 -

流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持

在流式处理操作期间, XmlReaderTextReader 对象中Stream发生错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持

StreamXmlReader流式处理操作期间, 或 TextReader 对象已关闭。 有关流式处理的详细信息,请参阅 SqlClient 流支持

示例

以下示例创建 , SqlCommand 然后使用 执行它 ExecuteNonQuery。 该示例传递了一个字符串,该字符串是 Transact-SQL 语句 (,例如 UPDATE、INSERT 或 DELETE) ,以及用于连接到数据源的字符串。

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
            CreateCommand(qs, str);
        }
        private static void CreateCommand(string queryString,
            string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}
// </Snippet1>

注解

可以使用 ExecuteNonQuery 执行目录操作 (例如,查询数据库的结构或创建数据库对象(如表) ),或者通过使用 UPDATE、INSERT 或 DELETE 语句更改数据库中 DataSet 的数据。

ExecuteNonQuery虽然 不返回任何行,但映射到参数的任何输出参数或返回值都用数据填充。

对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。 对于其他所有类型的语句,返回值为 -1。 当触发器存在于要插入或更新的表上时,返回值包括受插入或更新操作影响的行数以及受触发器或触发器影响的行数。 当在连接 (设置 SET NOCOUNT ON 时,在执行命令之前或作为执行命令的一部分,或作为执行命令所启动的触发器的一部分) 受单个语句影响的行停止参与此方法返回的受影响的行计数。 如果未检测到参与计数的语句,则返回值为 -1。 如果发生回滚,则返回值也为 -1。

适用于