WikiBtsSio

Ts16Slam2AppliDvdMe

Application DVD

Fichier Nouveau Projet choisir Application Windows Forms
Nous allons changer le nom de la fenêtre :
Ce champ (Text) accepte les espaces ce qui n'est pas le cas de celui-ci  (le Name de l'objet) :

Allez dans Affichage → Boîte à outils
Sélectionnez ListBox Mettre comme propriété Name : LstDvd
Ajoutez au dessus de la liste Box un Label (Boîte à outils)
de « Name » : LabeListeDvd et en mettant comme « text » : Liste des DVD

ajouter text

ATTENTION : lors du choix de l'outil « Boîte à outils » il faut sélectionner la fenêtre contenant Form1?.cs[Design] c'est à dire l'interface homme / machine sinon la boîte à outils ne contiendra rien …
AFFICHAGE → Concepteur


Configuration sous Visual Studio
Fermez Visual Studio et relancez-le en vous repositionnant sur votre projet. Le but maintenant est de configurer Visual Studio pour qu'il se connecte à une base MySQL.
• Dans la partie « Affichage » puis « Explorateur de serveurs », faites un clic droit sur « Connexions de données » et choisissez « Ajouter une connexion ».

• Dans la fenêtre qui s'ouvre, sélectionnez comme source de données « MySQL Database » et cliquez sur « continuer ». Puis donnez les informations de connexion suivantes :
  • Server name : localhost
  • User name : root
  • Password : root
  • Cliquez sur « Tester la connexion » : si la connexion est réussie, tout va bien.

Cliquez sur la flèche pour ouvrir « Database name » : normalement la liste des bases de données MySQL de votre ordinateur doit apparaître.
Sélectionnez la base gestiondvd puis faites ok.
Normalement, la connexion à la base a été ajoutée à gauche dans la liste des connexions de données.

Il faut rattacher cette connexion à votre projet :
• Menu Projet > Ajoutez une nouvelle source de données. Suivant.
• Sélectionnez Base de données puis suivant puis Dataset puis Suivant.
• Normalement « localhost (gestiondvd) » est déjà sélectionné. Cliquez sur « + » pour la chaîne de connexion : vous devriez voir apparaître : server=localhost;user id=root;database=gestiondvd

J'ai obtenu : server=localhost;user id=root;persistsecurityinfo=True;database=gestiondvd
server=localhost;user id=root;password=root;persistsecurityinfo=True;database=gestiondvd

suivant .. suivant ...
Sélectionnez les tables puis terminer :

Vous allez ainsi avoir accès aux classes MySQL de connexion à la base de données. Pour que l'application se connecte à la base de données, il faudra que le serveur de la base de données soit actif (donc que uwamp soit lancé, pour les tests en local) et que la chaîne de connexion soit renseignée dans l'application pour pouvoir se connecter à la base de données.


Classe d'accès aux données

Avant de coder les différents événements, vous allez utiliser une classe qui va vous faciliter la vie pour accéder à la base de données. L'intérêt de cette classe technique est qu'elle peut être très facilement adaptable à un autre SGBDR si vous désiriez en changer : il suffirait de modifier les imports.
Récupérez la classe ConnexionSql?.cs et intégrez-la à votre projet. Modifiez si nécessaire le namespace si ce n'est pas le bon. Normalement la classe contient les commentaires nécessaires pour bien comprendre son utilisation.


La classe ConnexionSql.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data.Sql;

namespace gestionDvd
{
    class ConnexionSql
    {
        // propriétés
        private bool finCurseur=true; // fin du curseur atteinte
        private MySqlConnection connection; // chaine de connexion
        private MySqlCommand command; // envoi de la requête à la base de données
        private MySqlDataReader reader; // gestion du curseur

        // constructeur
        public ConnexionSql(string chaineConnection)
        {
            this.connection = new MySqlConnection(chaineConnection);
            this.connection.Open();
        }

        // execution d'une requete select
        public void reqSelect(string chaineRequete)
        {
            this.command = new MySqlCommand(chaineRequete, this.connection);
            this.reader = this.command.ExecuteReader();
            this.finCurseur = false;
            this.suivant();
        }

        // execution d'une requete update
        public void reqUpdate(string chaineRequete)
        {
            this.command = new MySqlCommand(chaineRequete, this.connection);
            this.command.ExecuteNonQuery();
            this.finCurseur = true;
        }

        // récupération d'un champ
        public Object champ(string nomChamp)
        {
            return this.reader[nomChamp];
        }

        // passage à la ligne suivante du curseur
        public void suivant()
        {
            if (!this.finCurseur)
            {
                this.finCurseur = !this.reader.Read();
            }
        }

        // test de la fin du curseur
        public Boolean fin()
        {
            return this.finCurseur;
        }

        // fermeture de la connexion
        public void close()
        {
            this.connection.Close();
        }
    }

}



Ajouter un élément existant.
Très IMPORTANT !
Dans le code de gestionDvd.ConnexionSql changer la ligne namespace gestionDvd
en namespace WindowsFormsApplication2 (mettre le même nom de namespace que dans program.cs
On peut tester le code celui-ci doit fonctionner même si il ne fait pas grand chose …

Après avoir fait un copier coller du fichier ConnexionSql?.cs dans le répertoire du projet

Ajouter un élément existant.
Très IMPORTANT !
Dans le code de gestionDvd.ConnexionSql changer la ligne namespace gestionDvd
en namespace WindowsFormsApplication2 (mettre le même nom de namespace que dans program.cs
On peut tester le code celui-ci doit fonctionner même si il ne fait pas grand chose …

Mode opératoire pour exécuter une requête de modification :
• Déclarer un objet de type ConnexionSQL et lui affecter une instance de la classe correspondante, en mettant en paramètre la chaîne de connexion.
• Utiliser la méthode reqUpdate sur l'objet créé, en mettant la requête en paramètre.
• Fermer l'accès avec la méthode close sur l'objet créé.
• Mode opératoire pour exécuter une requête de sélection :
• Déclarer un objet de type ConnexionSQL et lui affecter une instance de la classe correspondante, en mettant en paramètre la chaine de connexion.
• Utiliser la méthode reqSelect sur l'objet créé, en mettant la requête en paramètre.
• Utiliser les méthodes suivantes, sur l'objet créé, pour exploiter le résultat de la requête :
  • –– suivant() : avance d'une ligne dans le curseur ;
  • –– champ("nomDuChamp") : retourne le contenu du champ don le nom est passé en paramètre (le type retourné est Object, donc il faut le transtyper dans le type voulu ou appliquer la méthode toString() pour obtenir le résultat sous forme de chaîne) ;
  • –– fin() : retourne vrai si la fin du curseur est atteinte (vrai dès le début si le curseur est vide)

• Fermer l'accès avec la méthode close sur l'objet créé.
Voici un exemple d'utilisation :

string chaineConnexion = "server=localhost;user id=root;persistsecurityinfo=True;database=gestiondvd;PASSWORD=root";
// ConnexionSql crs = new ConnexionSql(this.chaineConnexion);
ConnexionSql crs = new ConnexionSql(chaineConnexion);
crs.reqSelect("select titre from dvd");
while (!crs.fin())
  • {
    • this.LstDvd.Items.Add((crs.champ("titre")).ToString());
    • crs.suivant();
  • }
crs.close();

Cette exemple récupère les titres de dvd et les ajoute dans lstDvd.


L' IHM finale




Liste des DVD → ListBox
Texte → Label
Bouton → button
Zone de saisie de texte → textBox (plusieurs lignes)
Pour afficher les genres → comboBox