Información general sobre SqlDataSource (Control de servidor Web)

Actualización: noviembre 2007

El control SqlDataSource permite utilizar un control de servidor web para tener acceso a los datos que se encuentran en una base de datos relacional. Esto puede incluir bases de datos de Microsoft SQL Server y Oracle, así como orígenes de datos OLE DB y ODBC. Puede usar el control SqlDataSource con controles enlazados a datos como los controles GridView, FormView y DetailsView para mostrar y manipular datos en una página web ASP.NET, con muy poco o nada de código.

Este tema contiene:

  • Información general

  • Ejemplos de código

  • Referencia de clase

Información general

El control SqlDataSource utiliza las clases de ADO.NET para interactuar con las bases de datos compatibles con ADO.NET. Esto incluye Microsoft SQL Server (mediante el proveedor System.Data.SqlClient), System.Data.OleDb, System.Data.Odbc y Oracle (mediante el proveedor System.Data.OracleClient). El uso de un control SqlDataSource le permite tener acceso a los datos de una página ASP.NET y manipularlos sin utilizar directamente las clases de ADO.NET. Para ello, debe proporcionar una cadena de conexión para conectarse a su base de datos y definir los procedimientos almacenados o instrucciones SQL que funcionan correctamente con sus datos. En tiempo de ejecución, el control SqlDataSource abre automáticamente la conexión a bases de datos, ejecuta el procedimiento almacenado o la instrucción SQL, devuelve los datos seleccionados (si existen) y, a continuación, cierra la conexión.

Conectar el control SqlDataSource a un origen de datos

Cuando configure un control SqlDataSource, establezca la propiedad ProviderName en el tipo de base de datos (el valor predeterminado es System.Data.SqlClient) y la propiedad ConnectionString en una cadena de conexión que incluya la información necesaria para conectarse a la base de datos. El contenido de la cadena de conexión difiere según el tipo de base de datos al que tiene acceso el control de origen de datos. Por ejemplo, el control SqlDataSource requiere un nombre de servidor, un nombre de base de datos (catálogo) e información sobre la manera de autenticar al usuario al conectarse a SQL Server. Para obtener información sobre las cadenas de conexión válidas, vea los temas de la propiedad ConnectionString para las clases SqlConnection, OracleConnection, OleDbConnection y OdbcConnection.

En lugar de establecer las cadenas de conexión en tiempo de diseño como valores de propiedad en el control SqlDataSource, puede almacenarlas de forma centralizada como parte de los valores de configuración de la aplicación mediante el elemento de configuración connectionStrings. Esto permite administrar las cadenas de conexión independientemente del código ASP.NET y cifrarlas mediante Configuración protegida. En el ejemplo siguiente se muestra una conexión a la base de datos de ejemplo Northwind de SQL Server que utiliza una cadena de conexión almacenada en el elemento de configuración connectionStrings denominado MyNorthwind.

<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

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

Emitir comandos de datos con el control SqlDataSource

Puede especificar un máximo de cuatro comandos (consultas SQL) para el comando SqlDataSource: SelectCommand, UpdateCommand, DeleteCommand e InsertCommand. Cada comando es una propiedad independiente del control de origen de datos. En cada propiedad de comando, es necesario especificar una instrucción SQL que debe ejecutar el control de origen de datos. Si éste se conecta a una base de datos que admite el uso de procedimientos almacenados, se puede especificar el nombre de uno de ellos en lugar de una instrucción SQL.

Puede crear comandos parametrizados que incluyan marcadores de posición para los valores que se van a proporcionar en tiempo de ejecución. En el ejemplo siguiente se muestra un comando Select parametrizado típico de SQL:

Select CustomerID, CompanyName From Customers Where City = @city

Puede crear objetos de parámetro que especifiquen de dónde debe obtener el comando los valores de los parámetros en tiempo de ejecución; por ejemplo, de otro control, de una cadena de consulta, etc. O bien, puede especificar los valores de parámetro mediante programación. Para obtener más información, vea Utilizar parámetros con el control SqlDataSource.

El control de origen de datos ejecuta los comandos cuando se llama a su método Select, Update, Delete o Insert correspondiente. El método Select se llama automáticamente al llamar al método DataBind de la página o de un control enlazado al control de origen de datos. Si desea que el control de origen de datos ejecute un comando, también puede llamar explícitamente a cualquiera de los cuatro métodos. Algunos controles, como el control GridView, pueden llamar a los métodos de forma automática, sin necesidad de hacerlo manualmente o de que se llame de forma explícita al método DataBind. Para obtener más información, vea Seleccionar datos mediante el control SqlDataSource y Modificar datos mediante el control SqlDataSource.

Devolver objetos DataSet o DataReader

El control SqlDataSource puede devolver datos de dos maneras: como un objeto DataSet o como un lector de datos de ADO.NET. Si lo desea, puede especificar cuál de los dos formatos se debe devolver estableciendo la propiedad DataSourceMode del control de origen de datos. Un objeto DataSet contiene todos los datos de la memoria del servidor, lo que permite manipularlos de varias maneras después de recuperarlos. Un lector de datos proporciona un cursor de sólo lectura que puede obtener registros individuales. Por regla general, se suele optar por devolver un conjunto de datos si se desea filtrar, ordenar o paginar los datos después de recuperarlos o conservarlos en la memoria caché. Por el contrario, se suele utilizar un lector de datos si simplemente se desea devolver los datos y se está utilizando un control de la página para mostrarlos. Por ejemplo, el uso de un lector de datos es ideal para devolver datos que se van a mostrar en un control ListBox, DropDownList o GridView, en los que la lista de resultados se muestra en un formato de sólo lectura.

Almacenar datos en caché con el control SqlDataSource

El control SqlDataSource puede almacenar en caché los datos que ha recuperado, lo cual puede mejorar el rendimiento de sus aplicaciones ya que evita consultas que consumen muchos recursos. El almacenamiento en caché resulta práctico en casi todas las situaciones en las que los datos no son muy volátiles y los resultados almacenados en caché son lo suficientemente pequeños para evitar el uso de demasiada memoria del sistema.

De forma predeterminada, el almacenamiento en caché no está habilitado. Puede habilitarlo estableciendo la propiedad EnableCaching en true. El mecanismo de almacenamiento en caché está basado en el tiempo; puede establecer la propiedad CacheDuration en el número de segundos que los datos deben estar almacenados en la memoria caché. El control de origen de datos mantiene una entrada de caché independiente para cada combinación de conexión, comando de selección, parámetros de selección y configuración de caché.

El control SqlDataSource también puede aprovechar la característica de dependencia de la caché de SQL Server (si está disponible en su versión de SQL Server). Dicha característica permite especificar que los datos almacenados en la caché deben conservarse hasta que SQL Server notifique algún cambio en la tabla especificada. Este tipo de almacenamiento en memoria caché permite mejorar el rendimiento de las operaciones de acceso a datos en las aplicaciones Web, ya que es posible restringir la recuperación de datos a los momentos en los que es necesario obtener datos actualizados.

Para obtener más información, vea Almacenar datos en caché con el control SqlDataSource.

Filtrar con el control SqlDataSource

Si ha habilitado el almacenamiento en caché para el control SqlDataSource y ha especificado un conjunto de datos como formato de los datos devueltos por una consulta Select, también puede filtrar los datos sin necesidad de volver a ejecutar la consulta. El control SqlDataSource admite una propiedad FilterExpression que permite especificar criterios de selección que se aplican a los datos mantenidos por el control de origen de datos. También se pueden agregar parámetros a la expresión de filtro creando objetos FilterParameters especiales que proporcionan valores en tiempo de ejecución para dicha expresión.

Ordenar con el control SqlDataSource

El control SqlDataSource admite solicitudes de ordenación del control enlazado cuando DataSourceMode se establece en DataSet. Para obtener más información, vea Ordenar datos con controles de origen de datos.

Volver al principio

Ejemplos de código

Seleccionar datos mediante el control SqlDataSource

Utilizar parámetros con el control SqlDataSource

Modificar datos mediante el control SqlDataSource

Almacenar datos en caché con el control SqlDataSource

Cómo: Habilitar el filtrado para el control SqlDataSource

Cómo: Conectar con una base de datos de SQL Server mediante el control SqlDataSource (Visual Studio)

Cómo: Conectar con una base de datos de Access mediante el control SqlDataSource (Visual Studio)

Cómo: Conectar con una base de datos ODBC mediante el control SqlDataSource (Visual Studio)

Cómo: Conectar con una base de datos de Oracle mediante el control SqlDataSource (Visual Studio)

Volver al principio

Referencia de clase

En la tabla siguiente se enumeran las clases clave que se relacionan con el control SqlDataSource.

Miembro

Descripción

SqlDataSource

Clase principal del control.

Volver al principio

Vea también

Conceptos

Información general sobre el control de servidor web LinqDataSource

Referencia

Información general sobre el control de servidor web ObjectDataSource

Otros recursos

Controles de servidor web de orígenes de datos