Partilhar via


SqlDataAdapter.DeleteCommand Propriedade

Definição

Obtém ou define uma instrução Transact-SQL ou um procedimento armazenado para excluir registros na fonte de dados.

public:
 property Microsoft::Data::SqlClient::SqlCommand ^ DeleteCommand { Microsoft::Data::SqlClient::SqlCommand ^ get(); void set(Microsoft::Data::SqlClient::SqlCommand ^ value); };
public Microsoft.Data.SqlClient.SqlCommand DeleteCommand { get; set; }
member this.DeleteCommand : Microsoft.Data.SqlClient.SqlCommand with get, set
Public Property DeleteCommand As SqlCommand

Valor da propriedade

Um SqlCommand usado durante o Update(DataSet) para excluir registros no banco de dados que correspondem às linhas excluídas no DataSet.

Exemplos

O exemplo a seguir cria um SqlDataAdapter e define as SelectCommandpropriedades , InsertCommand, UpdateCommande DeleteCommand . Ele pressupõe que você já tenha criado um SqlConnection objeto .

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
    }
    public static SqlDataAdapter CreateCustomerAdapter(
        SqlConnection connection)
    {
        SqlDataAdapter adapter = new SqlDataAdapter();

        // Create the SelectCommand.
        SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
            "WHERE Country = @Country AND City = @City", connection);

        // Add the parameters for the SelectCommand.
        command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
        command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

        adapter.SelectCommand = command;

        // Create the InsertCommand.
        command = new SqlCommand(
            "INSERT INTO Customers (CustomerID, CompanyName) " +
            "VALUES (@CustomerID, @CompanyName)", connection);

        // Add the parameters for the InsertCommand.
        command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
        command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

        adapter.InsertCommand = command;

        // Create the UpdateCommand.
        command = new SqlCommand(
            "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
            "WHERE CustomerID = @oldCustomerID", connection);

        // Add the parameters for the UpdateCommand.
        command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
        command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
        SqlParameter parameter = command.Parameters.Add(
            "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
        parameter.SourceVersion = DataRowVersion.Original;

        adapter.UpdateCommand = command;

        // Create the DeleteCommand.
        command = new SqlCommand(
            "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

        // Add the parameters for the DeleteCommand.
        parameter = command.Parameters.Add(
            "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
        parameter.SourceVersion = DataRowVersion.Original;

        adapter.DeleteCommand = command;

        return adapter;
    }
}

Comentários

Durante Update, se essa propriedade não estiver definida e as informações de chave primária estiverem presentes no DataSet, o DeleteCommand poderá ser gerado automaticamente se você definir a SelectCommand propriedade e usar o SqlCommandBuilder. Em seguida, todos os comandos adicionais que você não definir são gerados pelo SqlCommandBuilder. Esta lógica de geração requer que as informações da coluna principal estejam presente no DataSet. Para obter mais informações, confira Gerar comandos com CommandBuilders.

Quando DeleteCommand é atribuído a um criado SqlCommandanteriormente, o SqlCommand não é clonado. O DeleteCommand mantém uma referência ao objeto criado SqlCommand anteriormente.

Para cada coluna propagada para a fonte de dados em Update, um parâmetro deve ser adicionado ao InsertCommand, UpdateCommandou DeleteCommand. A SourceColumn propriedade do parâmetro deve ser definida como o nome da coluna. Isso indica que o valor do parâmetro não é definido manualmente, mas é obtido da coluna específica na linha processada no momento.

Aplica-se a