SqlCommand.ExecuteNonQuery Метод

Определение

Выполняет для подключения инструкцию Transact-SQL и возвращает количество задействованных в инструкции строк.

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

Возвращаемое значение

Число обработанных строк.

Исключения

Если SqlDbType для параметра задано значение Stream , отличное от Binary или VarBinary, использовался Value . Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

-или-

Если SqlDbType для параметра задано значение TextReader , кроме Char, NChar, NVarChar, VarChar или Xml, использовался Value объект , отличный от Char, NChar, NVarChar, VarChar или Xml.

-или-

Объект , отличный SqlDbType от XML , использовался, когда Value для параметра задано значение XmlReader .

Возникло исключение при выполнении команды в заблокированной строке. Это исключение не создается при использовании платформы Microsoft .NET Framework версии 1.0.

-или-

Во время операции потоковой передачи истекло время ожидания. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Ошибка в объекте Stream или XmlReaderTextReader во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Подключение SqlConnection, закрытое или удаленное во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.

Объект Stream или XmlReaderTextReader был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи 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 для выполнения операций с каталогом (например, для запроса структуры базы данных или создания объектов базы данных, таких как таблицы), или для изменения данных в базе данных без использования DataSet путем выполнения инструкций UPDATE, INSERT или DELETE.

Хотя объект ExecuteNonQuery не возвращает строк, все выходные параметры или возвращаемые значения, сопоставленные с параметрами, заполняются данными.

Операторы UPDATE, INSERT и DELETE возвращают количество строк, которые были обработаны с их помощью. Для всех прочих типов операторов возвращаемым значением является -1. Если триггер существует в вставляемой или обновляемой таблице, возвращаемое значение включает количество строк, затронутых как операцией вставки или обновления, так и количество строк, затронутых триггером или триггерами. Если параметр SET NOCOUNT ON установлен для подключения (до выполнения команды или в рамках выполнения команды или в рамках триггера, инициированного выполнением команды), строки, на которые влияют отдельные инструкции, перестают влиять на количество затронутых строк, возвращаемых этим методом. Если операторы, влияющие на количество, не обнаружены, возвращаемое значение равно -1. Если происходит откат, возвращаемое значение также равно -1.

Применяется к