El control de origen de datos SqlDataSource representa los datos de una base de datos relacional SQL para controles enlazados a datos. Puede utilizar el control SqlDataSource junto con un control enlazado a datos para recuperar datos de una base de datos relacional y para mostrar, editar y ordenar datos en una página Web con poco código o ninguno.
Para conectar a una base de datos, debe establecer la propiedad ConnectionString en una cadena de conexión válida. El control SqlDataSource admite cualquier base de datos relacional SQL que pueda conectarse mediante un proveedor ADO.NET, tal como SqlClient, OleDb, Odbc o OracleClient. Para obtener información sobre cómo proteger las cadenas de conexión, vea Cómo: Proteger cadenas de conexión al utilizar controles de orígenes de datos.
Para recuperar datos de una base de datos subyacente, establezca la propiedad SelectCommand con una consulta SQL. Si la base de datos a la que está asociada el control SqlDataSource admite procedimientos almacenados, puede establecer la propiedad SelectCommand en el nombre de un procedimiento almacenado. La consulta SQL que especifique también puede ser una consulta parametrizada. Puede agregar objetos Parameter que asociados a una consulta parametrizada a la colección SelectParameters. Para obtener más información sobre las consultas SQL parametrizadas y su sintaxis, vea Utilizar parámetros con controles de origen de datos.
El control SqlDataSource recupera datos cada vez que se llama al método Select. Este método proporciona acceso mediante programación al método especificado por la propiedad SelectMethod. Los controles que se enlazan a SqlDataSource llaman automáticamente al método Select cuando se llama a su método DataBind. Si establece la propiedad DataSourceID de un control enlazado a datos, el control se enlaza automáticamente a los datos del origen de datos, según sea necesario. Establecer la propiedad DataSourceID es el método recomendado para enlazar un control ObjectDataSource a un control enlazado a datos. También puede utilizar la propiedad DataSource, pero deberá llamar explícitamente al método DataBind del control enlazado a datos. Algunos ejemplos de controles enlazados a datos que puede utilizar SqlDataSource son DataGrid, DetailsView, DataList y DropDownList. Puede llamar en cualquier momento al método Select mediante programación para recuperar los datos de la base de datos subyacente.
En escenarios de declaración y programación ASP.NET, puede establecer la propiedad DataSourceID del control enlazado a datos en el Id. del control SqlDataSource. También puede asignar una instancia de la clase SqlDataSource a la propiedad DataSource del control enlazado a datos. Para obtener más información sobre cómo enlazar el control enlazado a datos a los controles de origen de datos, vea Información general sobre el acceso a datos en ASP.NET.
Dependiendo de las capacidades del producto de base de datos subyacente y de la configuración de la instancia de la clase SqlDataSource, puede realizar operaciones de datos tales como actualizaciones, inserciones y eliminaciones. Para realizar estas operaciones de datos, establezca el texto de comando adecuado y cualquier parámetro asociado para la operación que desee realizar. Por ejemplo, para una operación de actualización, establezca la propiedad UpdateCommand en una cadena SQL o en el nombre de un procedimiento almacenado y agregue los parámetros necesarios a la colección UpdateParameters. La actualización se realiza cuando se llama al método Update, explícitamente mediante código o automáticamente mediante un control enlazado a datos. El mismo modelo general se sigue para las operaciones Delete y Insert.
Las consultas y comandos SQL que utilice en las propiedades SelectCommand, UpdateCommand, InsertCommand y DeleteCommand se pueden parametrizar. Esto significa que la consulta o comando puede utilizar marcadores de posición en lugar de valores literales y enlazar los marcadores de posición a variables definidas de aplicación o definidas por el usuario. Puede enlazar parámetros de series SQL a variables de sesión, valores que se pasan en la cadena de consulta a una página de formularios Web Forms, valores de propiedades de otros controles de servidor, y más. Para obtener más información sobre cómo utilizar los parámetros en consultas SQL con el control SqlDataSource, vea Utilizar parámetros con controles de origen de datos, Utilizar parámetros con el control SqlDataSource y Utilizar parámetros con el control SqlDataSource
De manera predeterminada, el control SqlDataSource funciona con el proveedor de datos de .NET Framework para SQL Server, pero SqlDataSource no es específico de Microsoft SQL Server. Puede conectar el control SqlDataSource con cualquier producto de base de datos para el que haya un proveedor de ADO.NET administrado. Cuando se utiliza con el proveedor System.Data.OleDb, el control SqlDataSource puede trabajar con cualquier base de datos compatible con OLE DB. Cuando se utiliza con el proveedor System.Data.Odbc, el control SqlDataSource se puede utilizar con cualquier controlador y base de datos ODBC, incluidas IBM DB2, MySQL y PostgreSQL. Cuando se utiliza con el proveedor System.Data.OracleClient, SqlDataSource puede trabajar con bases de datos de Oracle 8.1.7 y posteriores. La lista de proveedores permitidos se registra en la sección DbProviderFactories del archivo de configuración, o en el archivo Machine.config o Web.config. Para obtener más información, vea Seleccionar datos mediante el control SqlDataSource.
Si muestra datos en la página utilizando un control SqlDataSource, puede aumentar el rendimiento de la página con las capacidades de almacenamiento en caché de datos del control de origen de datos. El almacenamiento en caché reduce la carga de procesamiento en los servidores de base de datos a expensas de la memoria del servidor Web; en la mayoría de los casos, es un intercambio favorable. El control SqlDataSource almacena los datos en memoria caché automáticamente cuando la propiedad EnableCaching está establecida en true y la propiedad CacheDuration está establecida en el número de segundos durante los cuales la memoria caché almacena datos antes de descartar la entrada de caché. También puede especificar un valor CacheExpirationPolicy y un valor SqlCacheDependency opcional.
El control SqlDataSource proporciona funciones adicionales, como se muestra en la tabla siguiente.
Función | Requisitos |
|---|
Almacenamiento en caché | Establezca la propiedad DataSourceMode en el valor DataSet, la propiedad EnableCaching en true, y las propiedades CacheDuration y CacheExpirationPolicy de acuerdo con el comportamiento de caché que desee para los datos almacenados en caché. |
Eliminación | Establezca la propiedad DeleteCommand en una instrucción SQL utilizada para eliminar datos. Esta instrucción suele parametrizarse. |
Filtración | Establezca la propiedad DataSourceMode en el valor DataSet. Establezca la propiedad FilterExpression en una expresión de filtrado utilizada para filtrar los datos cuando se llama al método Select. |
Inserción | Establezca la propiedad InsertCommand en una instrucción SQL utilizada para insertar datos. Esta instrucción suele parametrizarse. |
Paginación | Actualmente, el control SqlDataSource no la admite; sin embargo, algunos controles enlazados a datos, tales como GridView, admiten la paginación cuando se establece la propiedad DataSourceMode en el valor DataSet. |
Selección | Establezca la propiedad SelectCommand en una instrucción SQL utilizada para recuperar datos. |
Ordenación | Establezca la propiedad DataSourceMode en DataSet. |
Actualización | Establezca la propiedad UpdateCommand en una instrucción SQL utilizada para actualizar datos. Esta instrucción suele parametrizarse. |
Como ocurre con todos los controles de origen de datos, el control SqlDataSource se asocia a una clase de vista de origen de datos. El control SqlDataSource sólo tiene una SqlDataSourceView asociada y siempre se denomina Table.
No hay representación visual del control SqlDataSource; se implementa como un control para que pueda crearlo mediante declaración y, opcionalmente, para permitirle participar en la administración de estados. Por consiguiente, el control SqlDataSource no admite las características visuales, como las proporcionadas por las propiedades EnableTheming o SkinID.