Partilhar via


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 Command objeto com o comando SQL apropriado e uma Conexão, incluindo quaisquer parâmetros necessários. Execute o comando com o ExecuteNonQuery método do Command objeto.

O ExecuteNonQuery método devolve 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 é devolvida pelo procedimento armazenado, pelo que o ExecuteNonQuery método é utilizado, mas o procedimento armazenado recebe um parâmetro de entrada e devolve um parâmetro de saída e um valor de retorno.

Para o OleDbCommand objeto, o ReturnValue parâmetro deve ser adicionado primeiro à Parameters coleção.

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

Ver também