Atualizando dados em uma fonte de dados
As instruções SQL que modificam dados (como INSERT, UPDATE ou DELETE) não retornam linhas. Da mesma forma, muitos procedimentos armazenados executam uma ação, mas não retornam linhas. Para executar comandos que não retornam linhas, crie um objeto Command com o comando SQL apropriado e uma Connection, incluindo quaisquer Parâmetros necessários. Execute o comando com o método ExecuteNonQuery do objeto Command .
O método ExecuteNonQuery retorna um inteiro que representa o número de linhas afetadas pela instrução ou procedimento armazenado que foi executado. Se várias instruções forem executadas, o valor retornado será a soma dos registros afetados por todas as instruções executadas.
Exemplo
O exemplo de código a seguir executa uma instrução INSERT para inserir um registro em um banco de dados usando 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();
O exemplo de código a seguir executa o procedimento armazenado criado pelo código de exemplo em Executando operações de catálogo. Nenhuma linha é retornada pelo procedimento armazenado, portanto, o método ExecuteNonQuery é usado, mas o procedimento armazenado recebe um parâmetro de entrada e retorna um parâmetro de saída e um valor de retorno.
Para o OleDbCommand objeto, o parâmetro ReturnValue deve ser adicionado primeiro à coleção 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;