15. Annexes
15.1. Le SGBD MySQL avec Laragon
En 2008, les annexes du cours décrivaient l'installation de SQL Server 2005 Express et de MySQL 5, de leurs outils d'administration (MySQL GUI Tools) et de leurs pilotes ODBC, avec une trentaine de copies d'écran. Les chapitres 10 et 11 de ce document n'utilisent que MySQL 8, et la façon la plus simple de l'installer sous Windows est d'installer Laragon, un environnement de développement portable qui regroupe notamment MySQL, le client graphique HeidiSQL, un terminal configuré, Apache et PHP. L'auteur l'utilise aussi pour ses cours PHP.
15.1.1. Installation
Laragon se télécharge à l'adresse https://laragon.org. L'installation est classique ; on peut garder le dossier d'installation proposé ([C:\laragon]). Laragon fournit MySQL 8 (la version exacte dépend de celle de Laragon), avec un administrateur [root] sans mot de passe et un serveur qui écoute sur le port 3306 de la machine locale. C'est la configuration supposée par les exemples du document, dont les chaînes de connexion sont de la forme :
Si MySQL a été installé autrement, avec un mot de passe pour [root], il faut le reporter après [Password=] dans les chaînes de connexion des exemples (fichiers [appsettings.json] ou constantes en tête des programmes).
Pour un poste sans Laragon, on peut aussi installer MySQL Community Server depuis https://dev.mysql.com/downloads/mysql/, ou son dérivé libre MariaDB. Les exemples n'ont toutefois été testés qu'avec MySQL 8 : les scripts du chapitre 10 utilisent une collation propre à MySQL 8 ([utf8mb4_0900_ai_ci]) et les contextes du chapitre 11 annoncent à Pomelo un serveur MySQL ([MySqlServerVersion]) ; avec MariaDB, il faudrait adapter ces deux points.
15.1.2. Lancer et arrêter MySQL
La fenêtre principale de Laragon comporte un bouton Démarrer tout qui lance les serveurs (Apache et MySQL) et un bouton Arrêter qui les arrête. Contrairement à l'installation de MySQL 5 décrite en 2008, MySQL n'est pas un service Windows lancé au démarrage du poste : il ne tourne que lorsqu'on l'a démarré depuis Laragon, ce qui évite de consommer des ressources quand on ne s'en sert pas. Le menu de Laragon (clic droit dans la fenêtre) permet aussi de ne démarrer que MySQL, et de choisir sa version.
Quand MySQL n'est pas lancé, les programmes des chapitres 10 et 11 échouent avec une exception signalant qu'aucune connexion n'a pu être établie (« Unable to connect to any of the specified MySQL hosts ») : c'est la première chose à vérifier en cas d'erreur.
15.1.3. Le client en ligne de commande
Le bouton Terminal de Laragon ouvre un terminal dans lequel les commandes de Laragon sont accessibles, dont le client MySQL en ligne de commande [mysql]. On se connecte au serveur par :
puis on tape des ordres SQL terminés par un point-virgule ([show databases;], [use dbarticles;], [select * from articles;]) et [exit] pour quitter. Le client peut aussi exécuter un script SQL, ce que fait le chapitre 10 pour créer ses bases :
Les scripts recréent entièrement leur base à chaque exécution : on peut les relancer pour revenir à l'état initial des données après les essais.
15.1.4. Le client graphique HeidiSQL
Le bouton Base de données de Laragon lance le client graphique HeidiSQL, qui remplace les MySQL GUI Tools de 2008 (aujourd'hui abandonnés). Au premier lancement, HeidiSQL propose une session de connexion déjà configurée pour le serveur MySQL de Laragon (hôte [127.0.0.1], utilisateur [root], mot de passe vide, port 3306) ; il suffit de l'ouvrir. On obtient :
- à gauche, l'arborescence des bases de données du serveur et de leurs tables ;
- à droite, des onglets qui montrent la structure d'une table, ses données (modifiables directement) et une zone de saisie de requêtes SQL (onglet « Requête »), exécutées par [F9].
Pour créer une base avec un script du chapitre 10, on ouvre le script (menu « Fichier », commande de chargement d'un fichier SQL) dans un onglet de requête, puis on l'exécute ([F9]). On peut aussi créer une base, un utilisateur et ses droits par les menus de HeidiSQL (clic droit sur la connexion / « Créer nouveau » / « Base de données » ; menu « Outils » / « Gestionnaire d'utilisateurs »), mais les scripts SQL ont l'avantage d'être reproductibles et de pouvoir être relancés.
15.1.5. Les bases de données du document
Les chapitres 10 et 11 utilisent les bases suivantes, toutes sur le serveur MySQL local :
Base | Chapitre | Création |
[dbarticles] | 10 | script [10-adonet/sql/dbarticles.sql] : la table [articles] des exemples ADO.NET |
[dbimpots] | 10 | script [10-adonet/sql/dbimpots.sql] : la table [tranches] de la version 6 de l'application [Impots] et l'utilisateur [admimpots] |
[efarticles], [efboutique], [efclients] | 11 | créées par les programmes eux-mêmes ([EnsureCreated]) ou par les migrations d'EF Core ([dotnet ef database update]) |
[efimpots] | 11 | créée par la migration du projet de la version 7 de l'application [Impots] |
Une fois les essais terminés, on peut supprimer une base par l'ordre SQL [drop database nom;], dans le client [mysql] ou dans HeidiSQL.
15.2. Les paquets NuGet utilisés
Le tableau suivant récapitule les bibliothèques NuGet utilisées par les exemples, avec les versions avec lesquelles les exemples ont été testés. Elles sont téléchargées automatiquement par la commande [dotnet] lors de la première compilation (il faut donc un accès à Internet à ce moment-là).
Paquet | Version | Chapitres |
[Microsoft.Extensions.DependencyInjection] | 10.0.12 | 6, 10, 11, 12 |
[Microsoft.Extensions.Configuration.Json] | 10.0.12 | 6, 10, 11, 12 |
[MSTest] | 4.0.2 | 6, 10 |
[MySqlConnector] | 2.4.0 | 10 |
[Microsoft.EntityFrameworkCore] | 9.0.0 | 11 |
[Microsoft.EntityFrameworkCore.Relational] | 9.0.0 | 11 |
[Microsoft.EntityFrameworkCore.Design] | 9.0.0 | 11 |
[Pomelo.EntityFrameworkCore.MySql] | 9.0.0 | 11 |
[Microsoft.Extensions.Http] | 10.0.12 | 13 |
L'outil de migrations d'EF Core s'installe une fois pour toutes par la commande [dotnet tool install --global dotnet-ef --version 9.0.0] (chapitre 11). ASP.NET Core (chapitres 12 et 13) fait partie du SDK et ne demande aucun paquet.