SqlDataSource.DeleteCommand Eigenschaft

Definition

Ruft die SQL-Zeichenfolge ab, die vom SqlDataSource-Steuerelement zum Löschen von Daten aus der zugrunde liegenden Datenbank verwendet wird, oder legt diese Zeichenfolge fest.Gets or sets the SQL string that the SqlDataSource control uses to delete data from the underlying database.

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

Eigenschaftswert

Eine SQL-Zeichenfolge, die von der SqlDataSource zum Löschen von Daten verwendet wird.An SQL string that the SqlDataSource uses to delete data.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie der DeleteCommand Text so festgelegt wird, dass eine Bestellung aus der Tabelle "Northwind database Orders" gelöscht wird.The following code example demonstrates how to set the DeleteCommand text to delete an order from the Northwind database Orders table. Daten werden aus der Tabelle Orders abgerufen und in einem GridView -Steuerelement angezeigt.Data is retrieved from the Orders table and displayed in a GridView control. Das GridView rendert automatisch eine Lösch Schaltfläche, wenn AutoGenerateDeleteButton die true-Eigenschaft auf festgelegt ist.The GridView renders a Delete button automatically when the AutoGenerateDeleteButton property is set to true. Außerdem füllt das GridView Steuerelement beim Klicken auf die Schaltfläche Löschen automatisch die DeleteParameters Auflistung auf und ruft die Delete -Methode auf.Additionally, when the Delete button is clicked, the GridView control automatically populates the DeleteParameters collection and calls the Delete method. Da in diesem Codebeispiel Daten gelöscht werden, wird ein Ereignishandler hinzugefügt, der versucht, die Datenbank vor dem Ausführen des Delete Vorgangs auf dem Datenträger zu sichern.Finally, because this code example deletes data, an event handler is added to attempt to back up the database to disk before the Delete operation is performed.

<%@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>

Hinweise

Stellt eine SQL-Abfrage oder den Namen einer gespeicherten Prozedur dar und wird von der Delete -Methode verwendet. DeleteCommandThe DeleteCommand represents an SQL query or the name of a stored procedure, and is used by the Delete method.

Da die jeweiligen Datenbankprodukte verschiedene SQL-Varianten verwenden, hängt die Syntax der SQL-Zeichenfolge vom derzeit verwendeten ADO.NET-Anbieter ab, der durch die ProviderName-Eigenschaft identifiziert wird.Because different database products use different varieties of SQL, the syntax of the SQL string depends on the current ADO.NET provider being used, which is identified by the ProviderName property. Wenn die SQL-Zeichenfolge eine parametrisierte Abfrage oder ein parametrisierter Befehl ist, hängt die Syntax des Parameters auch vom verwendeten ADO.NET-Anbieter ab.If the SQL string is a parameterized query or command, the syntax of the parameter also depends on the ADO.NET provider being used. Wenn der Anbieter System.Data.SqlClientz. b. der Standardanbieter für die SqlDataSource -Klasse ist, ist '@parameterName'die Syntax des-Parameters.For example, if the provider is the System.Data.SqlClient, which is the default provider for the SqlDataSource class, the syntax of the parameter is '@parameterName'. Wenn der Anbieter jedoch auf System.Data.Odbc oder System.Data.OleDbfestgelegt ist, ist '?'der Platzhalter des-Parameters.However, if the provider is set to the System.Data.Odbc or System.Data.OleDb, the placeholder of the parameter is '?'. Weitere Informationen über parametrisierte SQL-Abfragen und-Befehle finden Sie unter Verwenden von Parametern mit dem SqlDataSource-SteuerElement.For more information about parameterized SQL queries and commands, see Using Parameters with the SqlDataSource Control.

Die DeleteCommand -Eigenschaft kann eine SQL-Zeichenfolge oder der Name einer gespeicherten Prozedur sein, wenn die Datenbank gespeicherte Prozeduren unterstützt.The DeleteCommand property can be an SQL string or the name of a stored procedure, if the database supports stored procedures.

Die DeleteCommand -Eigenschaft delegiert an DeleteCommand die-Eigenschaft SqlDataSourceView des-Objekts, das dem SqlDataSource -Steuerelement zugeordnet ist.The DeleteCommand property delegates to the DeleteCommand property of the SqlDataSourceView object that is associated with the SqlDataSource control.

Wichtig

Aus Sicherheitsgründen wird die DeleteCommand -Eigenschaft nicht im Ansichts Zustand gespeichert.For security purposes, the DeleteCommand property is not stored in view state. Da es möglich ist, den Inhalt des Ansichts Zustands auf dem Client zu decodieren, kann das Speichern sensibler Informationen über die Datenbankstruktur im Ansichts Zustand zu einem Sicherheitsrisiko bei der Offenlegung von Informationen führen.Because it is possible to decode the contents of view state on the client, storing sensitive information about the database structure in view state could result in an information disclosure vulnerability.

Gilt für:

Siehe auch