Share via


Vue d'ensemble du contrôle serveur Web SqlDataSource

Mise à jour : novembre 2007

Le contrôle SqlDataSource vous permet d'utiliser un contrôle serveur Web pour accéder aux données localisées dans une base de données relationnelle. Il peut s'agir de bases de données Microsoft SQL Server et Oracle, ou de sources de données OLE DB et ODBC. Vous pouvez utiliser le contrôle SqlDataSource avec d'autres contrôles qui affichent des données, comme les contrôles GridView, FormView et DetailsView, pour afficher et manipuler des données dans une page Web ASP.NET, en n'utilisant que peu ou pas de code.

Cette rubrique contient les sections suivantes :

  • Contexte

  • Exemples de code

  • Référence de classe

Contexte

Le contrôle SqlDataSource utilise les classes ADO.NET pour interagir avec les bases de données prises en charge par ADO.NET. C'est le cas avec Microsoft SQL Server (à l'aide du fournisseur System.Data.SqlClient), System.Data.OleDb, System.Data.Odbc et Oracle (à l'aide du fournisseur System.Data.OracleClient). À l'aide d'un contrôle SqlDataSource, vous pouvez accéder aux données d'une page ASP.NET et les manipuler sans utiliser directement les classes ADO.NET. Vous devez fournir une chaîne de connexion pour vous connecter à votre base de données, et définir les instructions SQL ou les procédures stockées qui fonctionnent avec ces données. Au moment de l'exécution, le contrôle SqlDataSource ouvre automatiquement la connexion à la base de données, exécute l'instruction SQL ou la procédure stockée, retourne les données sélectionnées (le cas échéant), puis ferme la connexion.

Connexion du contrôle SqlDataSource à une source de données

Lorsque vous configurez un contrôle SqlDataSource, vous devez affecter à la propriété ProviderName la valeur du type de la base de données (la valeur par défaut est System.Data.SqlClient) et à la propriété ConnectionString la valeur d'une chaîne de connexion comprenant les informations requises pour se connecter à la base de données. Le contenu d'une chaîne de connexion diffère selon le type de base de données auquel accède le contrôle de source de données. Par exemple, le contrôle SqlDataSource requiert un nom de serveur, le nom de la base de données (le catalogue) et des informations sur la façon d'authentifier l'utilisateur lorsqu'il se connecte à un SQL Server. Pour plus d'informations sur les chaînes de connexion valides, consultez les rubriques sur les propriétés ConnectionString des classes SqlConnection, OracleConnection, OleDbConnection et OdbcConnection.

Plutôt que de paramétrer des chaînes de connexion au moment du design comme étant des paramètres de propriétés dans le contrôle SqlDataSource, vous pouvez les stocker de façon centralisée dans les paramètres de configuration de votre application à l'aide de l'élément de configuration connectionStrings. Cela vous permet de gérer les chaînes de connexion indépendamment de votre code ASP.NET, y compris pour le chiffrement, en utilisant la configuration protégée. L'exemple suivant montre la connexion à l'exemple de base de données Northwind SQL Server à l'aide d'une chaîne de connexion stockée dans l'élément de configuration connectionStrings nommé 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>

Mise en cache de commandes de données avec le contrôle SqlDataSource

Vous pouvez spécifier jusqu'à quatre commandes (requêtes SQL) pour la commande SqlDataSource : SelectCommand, UpdateCommand, DeleteCommand et InsertCommand. Chaque commande est une propriété distincte du contrôle de source de données. Pour chaque propriété de commande, vous spécifiez une instruction SQL que le contrôle de source de données doit exécuter. Si le contrôle de source de données se connecte à une base de données qui prend en charge les procédures stockées, vous pouvez spécifier le nom d'une procédure stockée au lieu de l'instruction SQL.

Vous pouvez créer des commandes paramétrées qui incluent des espaces réservés pour les valeurs à fournir au moment de l'exécution. L'exemple suivant présente une instruction SQL Select paramétrée :

Select CustomerID, CompanyName From Customers Where City = @city

Vous pouvez créer des objets paramètre qui spécifient l'emplacement où la commande doit obtenir les valeurs de paramètre au moment de l'exécution, par exemple dans un autre contrôle, dans une chaîne de requête, etc. Vous pouvez également spécifier les valeurs de paramètre par programme. Pour plus d'informations, consultez Utilisation de paramètres avec le contrôle SqlDataSource.

Le contrôle de source de données exécute les commandes lorsque sa méthode correspondante Select, Update, Delete ou Insert est appelée. La méthode Select est appelée automatiquement lorsque vous appelez la méthode DataBind de la page ou d'un contrôle lié au contrôle de source de données. Vous pouvez également appeler explicitement l'une des quatre méthodes pour que le contrôle de source de données exécute une commande. Certains contrôles, par exemple le contrôle GridView, peuvent appeler automatiquement les méthodes, sans qu'il soit nécessaire que vous interveniez ou que vous appeliez explicitement la méthode DataBind. Pour plus d'informations, consultez Sélection de données à l'aide du contrôle SqlDataSource et Modification de données à l'aide du contrôle SqlDataSource.

Retour des objets DataSet ou DataReader

Le contrôle SqlDataSource peut retourner les données sous deux formes : comme un objet DataSet ou comme un lecteur de données ADO.NET. Vous pouvez spécifier sous quelle forme les retourner en définissant la propriété DataSourceMode du contrôle de source de données. Un objet DataSet contient toutes les données présentes dans la mémoire serveur, ce qui permet de les manipuler de diverses manières une fois qu'elles sont récupérées. Un lecteur de données fournit un curseur en lecture seule qui peut extraire des enregistrements individuels. En règle générale, vous choisirez de retourner un groupe de données si vous voulez filtrer, trier ou parcourir les données à la suite de leur récupération ou si vous voulez gérer un cache. En revanche, vous utiliserez un lecteur de données si vous souhaitez simplement retourner les données et si vous utilisez un contrôle dans la page pour les afficher. Un lecteur de données sera tout indiqué, par exemple, pour retourner des données que vous souhaitez afficher dans un contrôle ListBox, DropDownList ou GridView dans lequel des listes de résultats s'affichent en lecture seule.

Mise en cache de données avec le contrôle SqlDataSource

Le contrôle SqlDataSource peut mettre en cache les données qu'il a récupérées, ce qui permet d'améliorer les performances de vos applications en évitant des requêtes onéreuses. La mise en cache sera utile dans presque toutes les situations où les données sont peu volatiles et où les résultats mis en cache sont de taille suffisamment faible pour ne pas utiliser trop de mémoire système.

La mise en cache est désactivée par défaut. Vous pouvez l'activer en donnant à EnableCaching la valeur true. Le mécanisme de mise en cache est basé sur la durée ; vous pouvez paramétrer la propriété CacheDuration sur le nombre de secondes durant lesquelles garder des données en cache. Le contrôle de source de données gère une entrée de cache distincte pour chaque combinaison de connexion, de commande Select, de paramètres Select et de paramètres de cache.

Le contrôle SqlDataSource peut également exploiter la fonctionnalité de dépendance de cache de SQL Server (si elle est disponible dans votre version de SQL Server). Cette fonctionnalité vous permet de spécifier que les données contenues dans le cache sont conservées jusqu'à ce que SQL Server signale une modification dans la table spécifiée. Ce type de mise en cache permet d'améliorer les performances d'accès aux données dans vos applications Web, car vous pouvez limiter la récupération des données aux seules périodes où il est nécessaire d'obtenir des données actualisées.

Pour plus d'informations, consultez Mise en cache de données avec le contrôle SqlDataSource.

Filtrage à l'aide du contrôle SqlDataSource

Si vous avez activé la mise en cache des données pour le contrôle SqlDataSource et si vous avez spécifié que le format des données retournées par une requête Select doit être un groupe de données, vous pouvez également filtrer les données sans réexécuter la requête. Le contrôle SqlDataSource prend en charge une propriété FilterExpression, qui permet de spécifier des critères de sélection qui seront appliqués aux données conservées par le contrôle de source de données. Vous pouvez également paramétrer l'expression de filtre en créant des objets FilterParameters spéciaux qui fournissent des valeurs à l'expression de filtre au moment de l'exécution.

Tri à l'aide du contrôle SqlDataSource

Le contrôle SqlDataSource prend en charge les demandes de tri provenant du contrôle lié lorsque DataSourceMode a la valeur DataSet. Pour plus d'informations, consultez Tri de données avec des contrôles de source de données.

Retour au début

Exemples de code

Sélection de données à l'aide du contrôle SqlDataSource

Utilisation de paramètres avec le contrôle SqlDataSource

Modification de données à l'aide du contrôle SqlDataSource

Mise en cache de données avec le contrôle SqlDataSource

Comment : activer le filtrage pour le contrôle SqlDataSource

Comment : se connecter à une base de données SQL Server à l'aide du contrôle SqlDataSource (Visual Studio)

Comment : établir une connexion à une base de données Access à l'aide du contrôle SqlDataSource (Visual Studio)

Comment : établir une connexion à une base de données ODBC à l'aide du contrôle SqlDataSource (Visual Studio)

Comment : établir une connexion à une base de données Oracle à l'aide du contrôle SqlDataSource (Visual Studio)

Retour au début

Référence de classe

Le tableau suivant répertorie les classes clés relatives au contrôle SqlDataSource.

Membre

Description

SqlDataSource

Classe principale du contrôle.

Retour au début

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web LinqDataSource

Référence

Vue d'ensemble du contrôle serveur Web ObjectDataSource

Autres ressources

Contrôles serveur Web de sources de données