Récupération de données à l'aide du contrôle serveur Web AccessDataSource
Mise à jour : novembre 2007
Le contrôle AccessDataSource vous permet de récupérer des données d'une base de données Microsoft Access (fichier .mdb). Vous pouvez ensuite afficher les données dans des contrôles liés aux données, tels que les contrôles GridView, FormView et DetailsView.
Le contrôle AccessDataSource hérite de la classe SqlDataSource et remplace la propriété ConnectionString par une propriété DataFile, laquelle permet de se connecter plus facilement à une base de données Microsoft Access. Le contrôle AccessDataSource utilise le fournisseur System.Data.OleDb pour se connecter aux bases de données Access à l'aide du fournisseur OLE DB Microsoft.Jet.OLEDB.4.0.
Connexion à une base de données à l'aide du contrôle AccessDataSource
Le contrôle AccessDataSource se connecte au fichier de base de données Microsoft Access (.mdb) identifié dans la propriété DataFile. Vous pouvez affecter un chemin d'accès UNC pointant vers un fichier de base de données Access à la propriété DataFile. L'exemple suivant montre comment utiliser un chemin d'accès relatif à la racine pour identifier une base de données Access qui se trouve dans le dossier App_Data de l'application Web active.
<asp:AccessDataSource
id="AccessDataSource1"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees">
</asp:AccessDataSource>
Si vous stockez un fichier de base de données Access avec votre application Web, il est recommandé de le stocker dans le dossier App_Data et conserver ainsi la base de données privée. ASP.NET n'autorise pas le retour de fichiers du dossier App_Data en cas de demande directe. L'identité du processus ASP.NET doit bénéficier d'autorisations d'accès en lecture et en écriture aux bases de données Access stockées dans le dossier App_Data. Pour plus d'informations sur l'identité du processus ASP.NET, consultez Configuration de l'identité de processus ASP.NET.
Le contrôle AccessDataSource affecte à la propriété ProviderName de la classe SqlDataSource de base le fournisseur System.Data.OleDb et se connecte à l'aide du fournisseur OLE DB Microsoft.Jet.OLEDB.4.0. Vous ne pouvez pas définir les propriétés ProviderName ou ConnectionString du contrôle AccessDataSource.
Remarque : |
---|
AccessDataSource ne se connecte pas à une base de données Access protégée par mot de passe ; pour récupérer les données d'une base de données Access protégée par mot de passe, utilisez le contrôle SqlDataSource. |
Sélection de données à l'aide du contrôle AccessDataSource
Vous pouvez spécifier une requête SQL que le contrôle AccessDataSource devra exécuter en définissant sa propriété SelectCommand comme le montre l'exemple de code suivant.
<form id="form1" >
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
<form id="form1" >
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
Vous pouvez retourner des résultats d'une requête Microsoft Access en affectant StoredProcedure à la propriété SelectCommandType de votre propriété SelectCommand comme illustré dans l'exemple de code suivant.
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
Pour plus d'informations sur la modification de données à l'aide du contrôle AccessDataSource, consultez Modification de données à l'aide du contrôle SqlDataSource ; cette rubrique concerne le contrôle AccessDataSource dans la mesure où ce dernier hérite des fonctionnalités du contrôle SqlDataSource et utilise implicitement le fournisseur System.Data.OleDb.
Utilisation des paramètres avec le contrôle AccessDataSource
Vous pouvez utiliser des requêtes paramétrées pour les commandes et fournir des paramètres au moment de l'exécution. En outre, vous pouvez spécifier des paramètres au moment de l'exécution lors de l'appel à une requête Microsoft Access. (Pour appeler une requête Microsoft Access, affectez StoredProcedure à la propriété du type de commande). Pour plus d'informations, consultez Utilisation de paramètres avec des contrôles de source de données.
Dans la mesure où le contrôle AccessDataSource étend la classe SqlDataSource et utilise le fournisseur System.Data.OleDb, spécifiez les espaces réservés des paramètres à l'aide du caractère d'espace réservé "?". Le fournisseur System.Data.OleDb ne prend pas en charge des paramètres nommés ; au lieu de cela, les valeurs des paramètres sont appliquées en respectant l'ordre dans lequel ils sont spécifiés dans la collection de paramètres. Vous devez vérifier que l'ordre des paramètres dans la collection de paramètres correspond à l'ordre des espaces réservés de paramètres dans votre instruction SQL ou requête Microsoft Access. Pour plus d'informations et d'exemples, consultez Utilisation de paramètres avec le contrôle SqlDataSource.