Updated: July 2009
Represents an SQL database to data-bound controls.
Assembly: System.Web (in System.Web.dll)
[ToolboxBitmapAttribute(typeof(SqlDataSource))] [AspNetHostingPermissionAttribute(SecurityAction::LinkDemand, Level = AspNetHostingPermissionLevel::Minimal)] [AspNetHostingPermissionAttribute(SecurityAction::InheritanceDemand, Level = AspNetHostingPermissionLevel::Minimal)] public ref class SqlDataSource : public DataSourceControl
The data source control represents data in an SQL relational database to data-bound controls. You can use the control in conjunction with a data-bound control to retrieve data from a relational database and to display, edit, and sort data on a Web page with little or no code.
To connect to a database, you must set the ConnectionString property to a valid connection string. The can support any SQL relational database that can be connected to using an ADO.NET provider, such as the SqlClient, OleDb, Odbc, or OracleClient providers. For information about how to secure connection strings, see How To: Secure Connection Strings when Using Data Source Controls.
To retrieve data from an underlying database, set the SelectCommand property with an SQL query. If the database that the is associated with supports stored procedures, you can set the SelectCommand property to the name of a stored procedure. The SQL query that you specify can also be a parameterized query. You can add Parameter objects that are associated with a parameterized query to the SelectParameters collection. For more information about parameterized SQL queries and their syntax, see Using Parameters with Data Source Controls.
The control retrieves data whenever the Select method is called. This method provides programmatic access to the method that is specified by SelectMethod property. The Select method is automatically called by controls that are bound to the when their DataBind method is called. If you set the DataSourceID property of a data-bound control, the control automatically binds to data from the data source, as required. Setting the DataSourceID property is the recommended method for binding an ObjectDataSource control to a data-bound control. Alternatively, you can use the DataSource property, but then you must explicitly call the DataBind method of the data-bound control. Some examples of data-bound controls that can use are DataGrid, DetailsView, DataList, and DropDownList. You can call the Select method programmatically at any time to retrieve data from the underlying database.
In declarative and programmatic ASP.NET scenarios, you can set the DataSourceID property of the data-bound control to the ID of the . You can also assign an instance of the class to the DataSource property of the data-bound control. For more information about binding data-bound control to data source controls, see ASP.NET Data Access Overview.
Depending on the capabilities of the underlying database product and the configuration of the instance of the class, you can perform data operations, such as updates, inserts, and deletes. To perform these data operations, set the appropriate command text and any associated parameters for the operation that you want to perform. For example, for an update operation, set the UpdateCommand property to an SQL string or the name of a stored procedure and add any required parameters to the UpdateParameters collection. The update is performed when the Update method is called, either explicitly by your code or automatically by a data-bound control. The same general pattern is followed for Delete and Insert operations.
The SQL queries and commands that you use in the SelectCommand, UpdateCommand, InsertCommand, and DeleteCommand properties can be parameterized. This means that the query or command can use placeholders instead of literal values and bind the placeholders to application or user-defined variables. You can bind parameters in SQL queries to Session variables, values that are passed on the query string for a Web Forms page, the property values of other server controls, and more. For more information about how to use parameters in SQL queries with the , see Using Parameters with Data Source Controls and Using Parameters with the SqlDataSource Control.
By default, if one of the parameters is nullptr when you execute a Select command, no data will be returned and no exception will be thrown. You can change this behavior by setting the CancelSelectOnNullParameter property to false.
By default, the control works with the .NET Framework Data Provider for SQL Server, but is not Microsoft SQL Server–specific. You can connect the control with any database product for which there is a managed ADO.NET provider. When used with the System.Data.OleDb provider, the can work with any OLE DB-compliant database. When used with the System.Data.Odbc provider, the can be used with any ODBC driver and database, including IBM DB2, MySQL, and PostgreSQL. When used with the System.Data.OracleClient provider, the can work with Oracle 8.1.7 databases and later. The list of allowable providers is registered in the DbProviderFactories section of the configuration file, either in the Machine.config or Web.config file. For more information, see Selecting Data Using the SqlDataSource Control.
If you display data on your page using a , you can increase the performance of the page by using the data caching capabilities of the data source control. Caching reduces the processing load on the database servers at the expense of memory on the Web server; in most cases, this is a good trade-off. The automatically caches data when the EnableCaching property is set to true and the CacheDuration property is set to the number of seconds that the cache stores data before the cache entry is discarded. You can also specify a CacheExpirationPolicy and an optional SqlCacheDependency value.
The provides additional capabilities, as listed in the following table.
Set the DataSourceMode property to the DataSet value, the EnableCaching property to true, and the CacheDuration and CacheExpirationPolicy properties according to the caching behavior you want for your cached data.
Set the DeleteCommand property to an SQL statement used to delete data. This statement is typically parameterized.
Set the InsertCommand property to an SQL statement used to insert data. This statement is typically parameterized.
Set the SelectCommand property to an SQL statement used to retrieve data.
Set the UpdateCommand property to an SQL statement used to update data. This statement is typically parameterized.
As with all data source controls, the control is associated with a data source view class. The control has only one associated SqlDataSourceView, and it is always named Table.
There is no visual rendering of the control; it is implemented as a control so that you can create it declaratively and, optionally, to allow it to participate in state management. As a result, the does not support visual features, such as the ones that are provided by the EnableTheming or SkinID property.
This section contains four code examples:
The first code example demonstrates how to display data from SQL Server in a GridView control using declarative syntax.
The second code example demonstrates how to display data from an ODBC-compliant database in a GridView control using declarative syntax.
The third code example demonstrates how to display and update data in a GridView control.
The fourth code example demonstrates how to display and update data in a DropDownList control.
These examples show how to use declarative syntax for data access. For information about how to access data by using code instead of markup, see Accessing Data (Visual Studio).
The following code example demonstrates how to use a control declaratively to retrieve data from SQL Server and display it in a GridView control.
The following code example demonstrates how to use a control declaratively to retrieve data from an ODBC-compliant database and display it in a GridView control. The ProviderName property is the name of the .NET Framework Data Provider for ODBC, which is System.Data.Odbc.
The following code example demonstrates a common display and update scenario with the GridView control. As with the previous examples, data from the Northwind database is displayed in the GridView control. Additionally, because an UpdateCommand property is specified and the AutoGenerateEditButton property is set to true, you can edit and update the records with no additional code. The GridView control automatically handles adding parameters to the UpdateParameters collection and calls the Update method when the Update button in the GridView control is clicked.
The following code example demonstrates a common display and update scenario with the DropDownList and TextBox controls. The DropDownList control does not automatically add update parameters to the UpdateParameters collection nor call the Update method, so you must do so. The update parameters are specified declaratively and you can add an event handler to perform the Update operation when an event is raised.
This example includes a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98