SqlDataSource.UpdateCommand Propiedad

Definición

Obtiene o establece la cadena de SQL que utiliza el control SqlDataSource para actualizar datos en la base de datos subyacente.Gets or sets the SQL string that the SqlDataSource control uses to update data in the underlying database.

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

Valor de propiedad

String

Una cadena de SQL que utiliza el control SqlDataSource para actualizar datos.An SQL string that the SqlDataSource uses to update data.

Ejemplos

Esta sección contiene dos ejemplos de código.This section contains two code examples. En el primer ejemplo de código se muestra cómo establecer la UpdateCommand propiedad del SqlDataSource control y actualizar datos en una base de datos de Microsoft SQL Server mediante el GridView control.The first code example demonstrates how to set the UpdateCommand property of the SqlDataSource control and update data in a Microsoft SQL Server database using the GridView control. En el segundo ejemplo de código se muestra cómo actualizar datos en una base de datos ODBC mediante el GridView control.The second code example demonstrates how to update data in an ODBC database using the GridView control.

En el ejemplo de código siguiente se muestra cómo establecer la UpdateCommand propiedad del SqlDataSource control y actualizar datos en una base de datos de SQL Server mediante el GridView control.The following code example demonstrates how to set the UpdateCommand property of the SqlDataSource control and update data in a SQL Server database using the GridView control. GridViewRellena automáticamente la UpdateParameters colección, deduciendo los parámetros de los BoundField objetos y llama al Update método cuando se selecciona el vínculo de actualización en el objeto editable GridView .The GridView automatically populates the UpdateParameters collection, inferring the parameters from the BoundField objects, and calls the Update method when the Update link on the editable GridView is selected. En este ejemplo también se incluye algún procesamiento posterior: una vez que se actualiza un registro, se envía un mensaje de correo electrónico de notificación.This example also includes some post-processing: after a record is updated, a notification email message is sent.

<%@Page  Language="C#" %>
<%@Import Namespace="System.Web.Mail" %>
<!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 OnDSUpdatedHandler(Object source, SqlDataSourceStatusEventArgs e) {
    if (e.AffectedRows > 0) {
        // Perform any additional processing, 
        // such as setting a status label after the operation.
        Label1.Text = Request.LogonUserIdentity.Name +
            " changed user information successfully!";    
    }
    else {
        Label1.Text = "No data updated!";
    }
 }
</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 EmployeeID,FirstName,LastName,Title FROM Employees"
          UpdateCommand="Update Employees SET FirstName=@FirstName,LastName=@LastName,Title=@Title WHERE EmployeeID=@EmployeeID"
          OnUpdated="OnDSUpdatedHandler">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AutoGenerateColumns="False"
          DataKeyNames="EmployeeID"
          AutoGenerateEditButton="True"
          DataSourceID="SqlDataSource1">
          <columns>
              <asp:BoundField HeaderText="First Name" DataField="FirstName" />
              <asp:BoundField HeaderText="Last Name" DataField="LastName" />
              <asp:BoundField HeaderText="Title" DataField="Title" />
          </columns>
      </asp:GridView>

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

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

<script runat="server">

 Sub OnDSUpdatedHandler(ByVal source As Object, ByVal e As SqlDataSourceStatusEventArgs)
    If e.AffectedRows > 0 Then
        ' Perform any additional processing, 
        ' such as setting a status label after the operation.        
        Label1.Text = Request.LogonUserIdentity.Name & _
            " changed user information successfully!"
    Else 
        Label1.Text = "No data updated!"
    End If
 End Sub 'OnDSUpdatedHandler
</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 EmployeeID,FirstName,LastName,Title FROM Employees"
          UpdateCommand="Update Employees SET FirstName=@FirstName,LastName=@LastName,Title=@Title WHERE EmployeeID=@EmployeeID"
          OnUpdated="OnDSUpdatedHandler">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AutoGenerateColumns="False"
          DataKeyNames="EmployeeID"
          AutoGenerateEditButton="True"
          DataSourceID="SqlDataSource1">
          <columns>
              <asp:BoundField HeaderText="First Name" DataField="FirstName" />
              <asp:BoundField HeaderText="Last Name" DataField="LastName" />
              <asp:BoundField HeaderText="Title" DataField="Title" />
          </columns>
      </asp:GridView>

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

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

El siguiente ejemplo de código, que es funcionalmente idéntico al ejemplo de código anterior, muestra cómo actualizar datos en una base de datos ODBC mediante el GridView control.The following code example, which is functionally identical to the preceding code example, demonstrates how to update data in an ODBC database using the GridView control. ProviderNameSe establece en el proveedor ADO.net para ODBC, System.Data.Odbc y la ConnectionString propiedad se establece en el nombre de un nombre de origen de datos ODBC (DSN).The ProviderName is set to the ADO.NET provider for ODBC, the System.Data.Odbc, and the ConnectionString property is set to the name of an ODBC data source name (DSN).

<%@Page  Language="C#" %>
<%@Import Namespace="System.Web.Mail" %>
<!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 OnDSUpdatedHandler(Object source, SqlDataSourceStatusEventArgs e) {
    if (e.AffectedRows > 0) {
        // Perform any additional processing, such as sending an email notification.
        Label1.Text = Request.LogonUserIdentity.Name +
            " changed user information successfully!";
    }
    else {
        Label1.Text = "No data updated!";
    }
 }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <!-- This example uses a Northwind database that is hosted by an ODBC-compliant
         database. To run this sample, create an ODBC DSN to any database that hosts
         the Northwind database, including Microsoft SQL Server or Microsoft Access,
         change the name of the DSN in the ConnectionString, and view the page.
    -->
    <form id="form1" runat="server">

      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ProviderName="System.Data.Odbc"
          DataSourceMode="DataSet"
          ConnectionString="dsn=myodbc3dsn;"
          SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
          UpdateCommand="Update Employees SET FirstName=?,LastName=?,Title=? WHERE EmployeeID=?"
          OnUpdated="OnDSUpdatedHandler">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AutoGenerateColumns="False"
          DataKeyNames="EmployeeID"
          AutoGenerateEditButton="True"
          DataSourceID="SqlDataSource1">
          <columns>
              <asp:BoundField HeaderText="First Name" DataField="FirstName" />
              <asp:BoundField HeaderText="Last Name" DataField="LastName" />
              <asp:BoundField HeaderText="Title" DataField="Title" />
          </columns>
      </asp:GridView>

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

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

<script runat="server">

 Sub OnDSUpdatedHandler(ByVal source As Object, ByVal e As SqlDataSourceStatusEventArgs)
    If e.AffectedRows > 0 Then
        ' Perform any additional processing, such as setting a status label.
        Label1.Text = Request.LogonUserIdentity.Name & _
            " changed user information successfully!"
    Else
        Label1.Text = "No data updated!"
    End If
 End Sub 'OnDSUpdatedHandler

</script>


<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <!-- This example uses a Northwind database that is hosted by an ODBC-compliant
         database. To run this sample, create an ODBC DSN to any database that hosts
         the Northwind database, including Microsoft SQL Server or Microsoft Access,
         change the name of the DSN in the ConnectionString, and view the page.
    -->
    <form id="form1" runat="server">

      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ProviderName="System.Data.Odbc"
          DataSourceMode="DataSet"
          ConnectionString="dsn=myodbc3dsn;"
          SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
          UpdateCommand="Update Employees SET FirstName=?,LastName=?,Title=? WHERE EmployeeID=?"
          OnUpdated="OnDSUpdatedHandler">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AutoGenerateColumns="False"
          DataKeyNames="EmployeeID"
          AutoGenerateEditButton="True"
          DataSourceID="SqlDataSource1">
          <columns>
              <asp:BoundField HeaderText="First Name" DataField="FirstName" />
              <asp:BoundField HeaderText="Last Name" DataField="LastName" />
              <asp:BoundField HeaderText="Title" DataField="Title" />
          </columns>
      </asp:GridView>

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

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

Comentarios

UpdateCommandRepresenta una consulta SQL o el nombre de un procedimiento almacenado y lo utiliza el Update método.The UpdateCommand represents an SQL query or the name of a stored procedure, and is used by the Update method.

Como productos de base de datos diferentes usan variedades diferentes de SQL, la sintaxis de la cadena de SQL depende del proveedor de ADO.NET actual que se está usando, identificado por la propiedad ProviderName.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. Si la cadena de SQL es un comando o consulta parametrizado, el marcador de posición del parámetro también depende del proveedor de ADO.NET que se está usando.If the SQL string is a parameterized query or command, the placeholder of the parameter also depends on the ADO.NET provider being used. Por ejemplo, si el proveedor es System.Data.SqlClient , que es el proveedor predeterminado para la SqlDataSource clase, el marcador de posición del parámetro es '@parameterName' .For example, if the provider is the System.Data.SqlClient, which is the default provider for the SqlDataSource class, the placeholder of the parameter is '@parameterName'. Sin embargo, si el proveedor está establecido en System.Data.Odbc o System.Data.OleDb , el marcador de posición del parámetro es '?' .However, if the provider is set to the System.Data.Odbc or System.Data.OleDb, the placeholder of the parameter is '?'. Para obtener más información sobre los comandos y las consultas SQL con parámetros, vea usar parámetros con el control SqlDataSource.For more information about parameterized SQL queries and commands, see Using Parameters with the SqlDataSource Control.

La UpdateCommand propiedad puede ser una cadena SQL o el nombre de un procedimiento almacenado, si el origen de datos admite procedimientos almacenados.The UpdateCommand property can be an SQL string or the name of a stored procedure, if the data source supports stored procedures.

La UpdateCommand propiedad delega en la UpdateCommand propiedad del SqlDataSourceView objeto que está asociado al SqlDataSource control.The UpdateCommand property delegates to the UpdateCommand property of the SqlDataSourceView object that is associated with the SqlDataSource control.

Importante

Por motivos de seguridad, la UpdateCommand propiedad no se almacena en el estado de vista.For security purposes, the UpdateCommand property is not stored is view state. Dado que es posible descodificar el contenido del estado de vista en el cliente, el almacenamiento de información confidencial sobre la estructura de la base de datos en el estado de vista podría dar lugar a una vulnerabilidad de divulgación de información.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.

Importante

Los valores se insertan en parámetros sin validación, lo que es una posible amenaza de seguridad.Values are inserted into parameters without validation, which is a potential security threat. Utilice el Filtering evento para validar los valores de los parámetros antes de ejecutar la consulta.Use the Filtering event to validate parameter values before executing the query. Para más información, consulte Información general sobre los ataques mediante scripts.For more information, see Script Exploits Overview.

Se aplica a

Consulte también