<asp:AccessDataSource> ID="MonNomSource" Runat="serveur" DataFile="MonNomMDB.mdb" SelectCommand="SELECT MyField1, MyField2 FROM MyTable"> </asp:AccessDataSource> |
<html> <tête> <titre>TIO ch02-1 Afficher les données MDB</titre> <tête> <corps> <h3>ch02 TIO 2 Démonstration de connexion à une source MDB </h3> <corps> </html> |
<%@langue de la page="VB" %> <html> <head><title>ch02 TIO 2 Afficher les données MDB</title></head> <corps> <h3>ch02 TIO 2 Démonstration de connexion à une source MDB </h3> <formulaire runat="serveur"> <asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Sélectionner * Parmi les produits" datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> <asp:gridview id="NorthwindProductsGridView" runat="server" datasourceid="NorthwindProductsAccDataSource"> </asp:gridview> </form></body></html> |
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Sélectionner * De [Ventes par catégorie] " Datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> |
(14) Ouvrez le navigateur et affichez la page.
Exemple de note n°2 - Connectez-vous à MDB et affichez les données avec GridView
Vous avez deux contrôles sur la page. Le premier, AccessDataSource, effectue tout le travail de connexion aux objets ADO.NET qui se connectent au moteur JET qui interagit avec le fichier MDB. Le second est GridView, qui permet d'obtenir des données et de convertir leur format au format HTML pouvant être affiché sur la page. Veuillez noter qu'il est très important de donner à chaque contrôle un nom (ID) significatif. Vous devez ensuite vous assurer que le contrôle lié aux données (GridView) utilise sa propriété DataSourceID pour référencer l'ID d'AccessDataSource afin d'utiliser AccessDataSource comme source de données.
L'affichage des données d'une requête n'est pas très difficile ; dans Access, vous pouvez utiliser des noms de requête au lieu de noms de table. Il y a deux instructions ici. Premièrement, s'il y a des espaces dans le nom d'une table ou d'une requête, le nom complet doit être placé entre crochets. Deuxièmement, les requêtes qui nécessitent une saisie de l'utilisateur (par exemple, « ventes au cours d'une année donnée » nécessitent de savoir quelle année) impliquent des techniques qui dépassent le cadre de ce livre.
Après avoir terminé les étapes précédentes, vous pouvez voir les données obtenues à partir du contrôle AccessDataSource affichées sur la page. Les chapitres ultérieurs couvriront GridView en détail, mais ce chapitre continuera à se concentrer sur les contrôles de source de données.
Sélectionner des variables dans les instructions
Lors de la création d'une source de données dans VWD, l'assistant vous demandera de spécifier les colonnes à afficher ou de créer une instruction SQL personnalisée. Dans le précédent "Try It Away", vous avez simplement sélectionné quelques colonnes. Les instructions SQL plus complexes peuvent être spécifiées de plusieurs manières différentes :
● Utiliser des boîtes de dialogue interactives
● Saisissez les instructions SQL personnalisées dans l'assistant AccessDataSource (appelé par la tâche pratique Configurer la source de données dans le contrôle).
● Saisir les instructions dans la grille des propriétés
● Saisir les instructions directement dans le balisage de la vue Source
La sélection de colonnes dans l'assistant Access DataSource est une technique privilégiée pour les requêtes simples qui renvoient une ou plusieurs colonnes d'une table distincte, car elle réduit les erreurs de typographie et de syntaxe (voir Figure 2-3). Dans cet assistant, vous pouvez sélectionner le nom de la table ou de la requête dans la liste déroulante Nom. Vous pouvez ensuite sélectionner les colonnes requises dans la table ou la requête en sélectionnant toutes les colonnes (*) ou n'importe quel groupe de colonnes. Si vous cliquez sur le bouton Trier par, vous pouvez trier selon n'importe quelle colonne de la source de données. S'il y a une contrainte sur la première colonne, le champ sélectionné dans Then By sera utilisé. Lorsque vous sélectionnez des options dans l'assistant, notez que la syntaxe SQL réelle de SelectCommand est également affichée dans une zone de texte en lecture seule.
Figure 2-3
Vous pouvez utiliser le bouton WHERE de l'assistant pour créer une instruction SQL avec des paramètres. Cette partie sera présentée au chapitre 9. Nous allons ignorer cette sélection pour l'instant, mais il est important qu'avant le déploiement, vous utilisiez ces paramètres qui seront abordés plus loin dans ce livre. Dans un site déployé, évitez de connecter directement les entrées utilisateur aux instructions SQL. Ignorer les problèmes de paramètres exposera votre site à des attaques par injection SQL. Cette technique d'attaque utilise de faux caractères provenant des entrées de l'utilisateur pour invalider l'instruction SQL d'origine, puis la remplace par une instruction destructrice. Vous pouvez utiliser des collections de paramètres pour envoyer les entrées utilisateur aux collections de paramètres ADO.NET, qui peuvent utiliser les fonctionnalités des collections pour réduire les problèmes d'injection SQL.
Bien que l'assistant de configuration de la source de données propose de nombreuses options permettant de créer rapidement des instructions SQL, vous devez parfois saisir (ou modifier) directement l'instruction SQL dans la commande SelectCommand marquée. L'assistant AccessDataSource permet ces opérations. Dans la page de l'assistant de sélection des tables, des requêtes et des colonnes, vous pouvez sélectionner le bouton radio « Spécifier une instruction SQL personnalisée ou une procédure stockée ». Après avoir sélectionné cette option dans la page de l'assistant, cliquez sur le bouton Suivant pour accéder à une autre page dans laquelle vous pouvez saisir directement des instructions personnalisées dans la zone de texte. Vous pouvez également utiliser Visual Studio QueryBuilder pour créer visuellement des instructions personnalisées, à l'aide d'outils très similaires à Access QueryBuilder.
Si vous ne souhaitez pas utiliser l'Assistant, vous pouvez choisir d'entrer une instruction SQL personnalisée dans la grille de propriétés du contrôle AccessDataSource, ou vous pouvez basculer vers la vue Source et entrer l'instruction dans la propriété SelectCommand de la balise de contrôle AccessDataSource.
Il existe de nombreux livres sur SQL (du même type que celui-ci est Beginning SQL Programming , ISBN 1-861001-80-0), et ce livre fournit une brève introduction en annexe. Si vous envisagez d'apprendre la syntaxe SQL, vous pouvez commencer par apprendre les commandes pour renvoyer une partie d'un enregistrement (TOP et DISTINCT), la syntaxe pour renommer un champ (AS) et la technique pour renvoyer les champs de deux tables liées (JOIN). . Les exercices suivants exploreront certaines variables dans les instructions SQL.
Essayez n°3 : Modification de l'instruction Select dans AccessDataSource Dans cet exercice, vous afficherez des colonnes et des enregistrements spécifiques de la table Products de Northwind. Une page sera également créée pour afficher les données obtenues à partir de la requête. Veuillez noter que dans cet exercice, les règles de sélection sont déjà dans le code source. Actuellement, il n’existe aucune option de saisie utilisateur.
(1) Créez un fichier nommé ch02_TIO_3_AlternateSelect-Commands.aspx dans C:WebsitesBegAspNet2Dbch02.
(2) Ajoutez un contrôle AccessDataSource avec Northwind comme ID et définissez le MDB sur App_DataNorthwind.mdb. Dans une série de boîtes de dialogue, configurez la commande Sélectionner pour récupérer tous les champs de la table Produits ("nom"=Produits). Jetez un œil à la vue Source et notez l'instruction que vous avez créée, comme indiqué ci-dessous :
SELECT * FROM Produits |
<%@langue de la page="VB" %> <html> <head runat="serveur"> <titre>ch02 TIO 3 Commandes de sélection alternatives</titre> </tête> <corps> <h3>ch02 TIO 3 Commandes de pièces de sélection alternatives</h3> <formulaire runat="serveur"> <asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="SELECT * FROM Produits" datafile=" ~/App_Data/Northwind.mdb" > </asp:accessdatasource> <asp:gridview id="GridViewl" runat="serveur" datasourceid="NorthwindAccDataSource"> </asp:gridview> </formulaire> </corps> </html> |
SELECT * FROM [Produits] WHERE (CategroyID=3) |
<asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="SELECT * FROM [Produits] WHERE (CategoryID = 3) " Datafile="~App_Data/Northwind.mdb"> </asp:accessdatasource> |
SELECT * FROM Produits WHERE ProductID = 12 SELECT * FROM Products WHERE ProductName = 'Sauce aux canneberges Northwoods' SELECT * FROM Produits WHERE ProductID <11 SELECT * FROM Produits WHERE ProductID <11 ORDER BY ProductName Ascending SELECT * FROM Produits OÙ ID Fournisseur = 6 OU ID Fournisseur = 8 SELECT * FROM Produits OÙ IDFournisseur = 24 ET PrixUnité > 10 |
Variables dans l'emplacement du fichier MDB
Les fichiers MDB sont stockés à différents emplacements physiques sur le disque dur : le même dossier que la page Web, un sous-dossier sous la page Web, ou d'autres dossiers sur la machine, etc. Dans Visual Web Developer, ces fichiers peuvent être parcourus fréquemment dans le concepteur et le chemin d'accès correct au fichier MDB a été saisi. Toutefois, si vous envisagez de saisir votre propre code, vous devrez suivre la syntaxe décrite dans cette section.
La propriété DataFile du contrôle AccessDataSource contient un chemin de page qui peut être entièrement qualifié (par exemple, commençant par une lettre de lecteur) ou spécifié par rapport à l'emplacement de la page qui contient AccessDataSource. Les chemins peuvent également être relatifs à l'application, c'est-à-dire utiliser la syntaxe URL pour référencer le chemin. Cette syntaxe remplace le symbole (~) par le répertoire racine de l'application, par exemple : ~App_Dataproduces.mdb. L'utilisation de chemins relatifs à l'application facilite le déplacement de pages d'un emplacement à un autre sans rompre les références à la base de données. Il est donc recommandé d'utiliser des chemins relatifs à l'application autant que possible.
Tout d'abord, examinons la syntaxe d'un chemin complet, qui contient le chemin complet d'un fichier MDB, en commençant par la racine du lecteur de l'ordinateur où se trouve le fichier :
<asp:accessdatasource . datafile= "C:WebSitesWebApplicationApp_DataMyMdb.mdb"> |
<asp:accessdatasource . |
<asp:accessdatasource . datafile="MonDossierFille/MonMdb.mdb">. |
<asp:accessdatasource . |
<asp:accessdatasource . |