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

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

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

Пример

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

' Assumes connection is a valid SqlConnection.
connection.Open()

Dim queryString As String = "INSERT INTO Customers " & _
  "(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')"

Dim command As SqlCommand = New SqlCommand(queryString, connection)
Dim recordsAffected As Int32 = command.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();

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

OleDbCommand Для объекта ReturnValue необходимо сначала добавить параметр в коллекциюParameters.

' Assumes connection is a valid SqlConnection.
Dim command As SqlCommand = _
   New SqlCommand("InsertCategory" , connection)
command.CommandType = CommandType.StoredProcedure

Dim parameter As SqlParameter = _
 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()

Dim categoryID As Int32 = CInt(command.Parameters("@Identity").Value)
Dim rowCount As Int32 = CInt(command.Parameters("@RowCount").Value)
// Assumes connection is a valid SqlConnection.
SqlCommand command = new SqlCommand("InsertCategory" , connection);
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;

См. также