Поделиться через


Обновление данных в источнике данных

Применимо: платформа .NET Framework .NET Standard

Скачать ADO.NET

Инструкции SQL, изменяющие данные (например, INSERT, UPDATE, или DELETE), не возвращают строки. Аналогичным образом, многие хранимые процедуры выполняют некоторое действие, но не возвращают строки. Для выполнения команд, которые не возвращают строки, создайте объект Command с соответствующей командой SQL и объект Connection, включающий требуемую коллекцию Parameters. Выполните команду с помощью метода ExecuteNonQuery объекта SqlCommand.

Примечание.

Метод ExecuteNonQuery возвращает значение типа integer, представляющее число строк, затрагиваемых выполненной инструкцией или хранимой процедурой. Если выполняется несколько инструкций, возвращенное значение является суммой количеств записей, затронутых всеми выполненными инструкциями.

Пример

В следующем примере кода выполняется инструкция INSERT для вставки записи в базу данных с помощью ExecuteNonQuery.

// Assumes connection is a valid SqlConnection.
connection.Open();

string queryString = "INSERT INTO Customers " +
"(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";

SqlCommand command = new SqlCommand(queryString, connection);
Int32 recordsAffected = command.ExecuteNonQuery();

В следующем примере кода выполняется хранимая процедура, созданная с помощью примера кода из статьи Выполнение операций c каталогами. Ни одна строка не возвращается хранимой процедурой, так что при использовании метода ExecuteNonQuery хранимая процедура получает входной параметр и возвращает выходной параметр и значение.

// Assumes command is a valid SqlCommand with an open connection.
command.CommandText = "InsertCategory";
command.CommandType = CommandType.StoredProcedure;

SqlParameter parameter = command.Parameters.Add("@RowCount", SqlDbType.Int);
parameter.Direction = ParameterDirection.ReturnValue;

parameter = command.Parameters.Add("@CategoryName", SqlDbType.NChar, 15);

parameter = command.Parameters.Add("@Identity", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;

command.Parameters["@CategoryName"].Value = "New Category";
command.ExecuteNonQuery();

Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;
Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;

См. также