Compartilhar via


SqlDataSource.DeleteCommand Propriedade

Definição

Obtém ou define a cadeia de caracteres SQL que o controle SqlDataSource usa para excluir dados do banco de dados subjacente.

public:
 property System::String ^ DeleteCommand { System::String ^ get(); void set(System::String ^ value); };
public string DeleteCommand { get; set; }
member this.DeleteCommand : string with get, set
Public Property DeleteCommand As String

Valor da propriedade

Uma cadeia de caracteres SQL usada pelo SqlDataSource para excluir dados.

Exemplos

O exemplo de código a seguir demonstra como definir o DeleteCommand texto para excluir um pedido da tabela Pedidos do banco de dados Northwind. Os dados são recuperados da tabela Pedidos e exibidos em um GridView controle . O GridView renderiza automaticamente um botão Excluir quando a AutoGenerateDeleteButton propriedade é definida truecomo . Além disso, quando o botão Excluir é clicado, o GridView controle preenche automaticamente a DeleteParameters coleção e chama o Delete método . Por fim, como este exemplo de código exclui dados, um manipulador de eventos é adicionado para tentar fazer backup do banco de dados no disco antes que a Delete operação seja executada.

<%@Page  Language="C#" %>
<%@Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
private void OnRecordDeleting(Object source, SqlDataSourceCommandEventArgs e) {    
    // Cancel the delete operation if the checkbox is not checked.
    if (! CheckBox1.Checked) {
        e.Cancel = true;
        Label1.Text = "The command was cancelled because the CheckBox was not checked.";
    }
 }

private void OnRecordDeleted(object source, SqlDataSourceStatusEventArgs e) {
    Label1.Text = e.AffectedRows + " row(s) were deleted";
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource
            id="SqlDataSource1"
            runat="server"
            DataSourceMode="DataSet"
            ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
            SelectCommand="SELECT * FROM Orders"            
            DeleteCommand="DELETE FROM [Order Details] WHERE OrderID=@OrderID;DELETE FROM Orders WHERE OrderID=@OrderID;"
            OnDeleting="OnRecordDeleting"
            OnDeleted="OnRecordDeleted">
        </asp:SqlDataSource>
        <br />
       <asp:CheckBox 
         id="CheckBox1" 
         runat="server"
         autopostback="true"
         text="Check To Delete Data" />
        <br />
        <br />

        <asp:GridView
            id="GridView1"
            runat="server"
            AutoGenerateColumns="False"
            DataKeyNames="OrderID"
            AutoGenerateDeleteButton="True"
            AllowPaging="True"
            PageSize="20"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField HeaderText="Order ID" DataField="OrderID" />
                <asp:BoundField HeaderText="Customer" DataField="CustomerID" />
                <asp:BoundField HeaderText="Order Placed" DataField="OrderDate" />
                <asp:BoundField HeaderText="Order Shipped" DataField="ShippedDate" />
            </Columns>
        </asp:GridView>

        <asp:Label
            id="Label1"
            runat="server">
        </asp:Label>

    </form>
  </body>
</html>
<%@Page  Language="VB" %>
<%@Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
 Sub On_Record_Deleting(ByVal source As Object, ByVal e As SqlDataSourceCommandEventArgs)
     ' Cancel the delete operation if the checkbox is not checked.
     If Not CheckBox1.Checked 
            e.Cancel = True
            Label1.Text = "The command was cancelled because the CheckBox was not checked."
     End If

End Sub 'On_Record_Deleting

Sub On_Record_Deleted(ByVal source As Object, ByVal e As SqlDataSourceStatusEventArgs)
    Label1.Text = e.AffectedRows & " row(s) were deleted"

End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:SqlDataSource
            id="SqlDataSource1"
            runat="server"
            DataSourceMode="DataSet"
            ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
            SelectCommand="SELECT * FROM Orders"
            DeleteCommand="DELETE FROM [Order Details] WHERE OrderID=@OrderID;DELETE FROM Orders WHERE OrderID=@OrderID;"
            OnDeleting="On_Record_Deleting"
            OnDeleted="On_Record_Deleted">
        </asp:SqlDataSource>
        <br />

       <asp:CheckBox 
         id="CheckBox1" 
         runat="server"
         autopostback="true"
         text="Check To Delete Data" />
        <br />
        <br />

        <asp:GridView
            id="GridView1"
            runat="server"
            AutoGenerateColumns="False"
            DataKeyNames="OrderID"
            AutoGenerateDeleteButton="True"
            AllowPaging="True"
            PageSize="20"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField HeaderText="Order ID" DataField="OrderID" />
                <asp:BoundField HeaderText="Customer" DataField="CustomerID" />
                <asp:BoundField HeaderText="Order Placed" DataField="OrderDate" />
                <asp:BoundField HeaderText="Order Shipped" DataField="ShippedDate" />
            </Columns>
        </asp:GridView>

        <asp:Label
            id="Label1"
            runat="server">
        </asp:Label>

    </form>
  </body>
</html>

Comentários

O DeleteCommand representa uma consulta SQL ou o nome de um procedimento armazenado e é usado pelo Delete método .

Porque os produtos diferentes de base de dados usam diferentes variedades SQL, a sintaxe da cadeia de caracteres SQL depende do provedor atual do ADO.NET que está sendo usado, que é identificado pela propriedade de ProviderName . Se a cadeia de caracteres SQL for uma consulta ou comando parametrizado, a sintaxe do parâmetro também dependerá do provedor ADO.NET que está sendo usado. Por exemplo, se o provedor for o System.Data.SqlClient, que é o provedor padrão para a SqlDataSource classe , a sintaxe do parâmetro será '@parameterName'. No entanto, se o provedor estiver definido como ou System.Data.OdbcSystem.Data.OleDb, o espaço reservado do parâmetro será '?'. Para obter mais informações sobre consultas e comandos SQL parametrizados, consulte Usando parâmetros com o controle SqlDataSource.

A DeleteCommand propriedade pode ser uma cadeia de caracteres SQL ou o nome de um procedimento armazenado, se o banco de dados der suporte a procedimentos armazenados.

A DeleteCommand propriedade delega à DeleteCommand propriedade do SqlDataSourceView objeto associado ao SqlDataSource controle .

Importante

Para fins de segurança, a DeleteCommand propriedade não é armazenada no estado de exibição. Como é possível decodificar o conteúdo do estado de exibição no cliente, armazenar informações confidenciais sobre a estrutura do banco de dados no estado de exibição pode resultar em uma vulnerabilidade de divulgação de informações.

Aplica-se a

Confira também