Partilhar via


Atualizar dados em uma fonte de dados

Aplicável a: .NET Framework .NET .NET Standard

Baixar ADO.NET

As instruções SQL que modificam dados (como UPDATE, INSERT 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 um Connection, incluindo os Parâmetros necessários. Execute o comando com o método ExecuteNonQuery do objeto SqlCommand.

Observação

O método ExecuteNonQuery retorna um número inteiro que representa o número de linhas afetadas pela instrução ou pelo procedimento armazenado que foi executado. Se várias instruções tiverem sido executadas, o valor retornado é 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();

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 exemplo de código em Executar 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.

// 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;

Confira também