WikiBtsSio

Ts16Slam2CMysqlMe

T.P. Liaison entre C# et MySQL

Vous allez dans ce T.P. réalisez la connexion entre C# et MySQL comme vous avez réalisé cette connexion avec le langage PHP.

Pour débuter vous allez utiliser le code se trouvant dans cette page.

Comment créer une connexion MySQL local en C#
Introduction

Cette article montre comment se connecter à une base de données MySQL en utilisant MySQL Connector .NET, dans ce cour nous utiliserons un serveur apache local créer avec XAMPP.
Prérequis

    - Avoir Visual Studio d'installer sur sa machine - Version Express disponible sur le site microsoft.com
    - Avoir XAMPP d'installer - Disponible sur le site Appachefriends.org
    - Avoir Téléchargé les fichiers DLL MySQL Connector .NET - Disponible sur le site mysql.com ou ici

Commençons

Lancez les services Apache et MySQL depuis XAMPP Control Panel. Maintenant nous pouvons passer aux étapes de création de base de données et de connexion depuis une application C#.
Étape 1 :

Ouvrez la page MySQL Admin (Depuis XAMPP Control Panel ou tapez 127.0.0.1 dans l'url de votre navigateur) et créez une nouvelle base de données. Dans notre exemple nous l'appelerons "mli".
Étape 2 :

Après avoir créer votre base de données, créez une table dans celle-ci. Dans notre exemple nous créons une table "contact" avec les champs suivant :
id (INTEGER), name (VARCHAR), tel (VARCHAR).
Étape 3 :

C'est le moment de créer votre projet sous Visual Studio. Ouvrez l'IDE, et créez un nouveau projet. Pour ma part je le nomme TutoMySQL. Une fois le projet crée, nous allons ajouter les "références", autrement dit les librairies qui vont nous permettre de travailler avec MySQL. Petit rappel, une librairie n'est autre que fichier DLL, composé de classes. Pour ce faire faite un clic droit sur "Reference" pour ajouter une nouvelle référence. Importer les fichiers DLL MySql.dll et MySql.web.dll téléchargés auparavant.
Étape 4 :

Ajoutez l'espace de nom MySql dans votre projet, cette assembly sera nécessaire pour la classe Bdd présentée ci-dessous.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
     
    // Librairie MySQL ajoutée dans les références.
    using MySql.Data.MySqlClient;
     
    namespace TutoMySQL
    {
    }

Étape 5 :

Aperçu de la chaîne de connexion :

    // 127.0.01 est l'adresse localhost du serveur Apache XAMPP
    // Nous avons créer une base de données nommée "mli"
    // L'utilisateur par défaut lors de l'installation de XAMPP est "root" sans mot de passe.
    string connectionString = "SERVER=127.0.0.1; DATABASE=mli; UID=root; PASSWORD=";

Étape 6 :

Le code suivant montre comment insérer des données dans une table MySQL. Pour cela créons une classe Contact simple et Bdd comme exemple avec une méthode (ou fonction) d'ajout et de connexion.

    public class Contact
    {
    // Création de 3 propriétés identifiant, nom et téléphone
    public int Id { get; set; }
    public string Name { get; set; }
    public string Tel { get; set; }
     
    // Constructeur
    public Contact()
    {
    }
    }


La classe Bdd va permettre la communication entre la base de donénes SQL et le programme. L'initialisation de la connexion s'éffectue dans le constructeur. On peut très bien ne pas faire comme cela et mettre la méthode InitConnexion en public avec en paramètre la chaîne de connexion.

    public class Bdd
    {
     
    private MySqlConnection connection;
     
    // Constructeur
    public Bdd()
    {
    this.InitConnexion();
    }
     
    // Méthode pour initialiser la connexion
    private void InitConnexion()
    {
    // Création de la chaîne de connexion
    string connectionString = "SERVER=127.0.0.1; DATABASE=mli; UID=root; PASSWORD=";
    this.connection = new MySqlConnection(connectionString);
    }
     
    // Méthode pour ajouter un contact
    public void AddContact(Contact contact)
    {
    try
    {
    // Ouverture de la connexion SQL
    this.connection.Open();
     
    // Création d'une commande SQL en fonction de l'objet connection
    MySqlCommand cmd = this.connection.CreateCommand();
     
    // Requête SQL
    cmd.CommandText = "INSERT INTO contact (id, name, tel) VALUES (@id, @name, @tel)";
     
    // utilisation de l'objet contact passé en paramètre
    cmd.Parameters.AddWithValue("@id", contact.Id);
    cmd.Parameters.AddWithValue("@name", contact.Name);
    cmd.Parameters.AddWithValue("@tel", contact.Tel);
     
    // Exécution de la commande SQL
    cmd.ExecuteNonQuery();
     
    // Fermeture de la connexion
    this.connection.Close();
    }
    catch
    {
    // Gestion des erreurs :
    // Possibilité de créer un Logger pour les exceptions SQL reçus
    // Possibilité de créer une méthode avec un booléan en retour pour savoir si le contact à été ajouté correctement.
    }
    }
    }


Utilisation dans le code :

    static class Program
    {
     
    static void Main(string[] args)
    {
    // Créer d'un contact à ajouter
    Contact contact = new Contact();
    contact.Id = 1;
    contact.Name = "Mli";
    contact.Tel = "00 00 00 00 00";
     
    // Création de l'objet Bdd pour l'intéraction avec la base de donnée MySQL
    Bdd bdd = new Bdd();
    bdd.AddContact(contact);
    }
     
    }

Pour finir

On vient de voir comment créer une connexion local à MySQL avec C# ainsi qu'une bref utilisation du traitement des données. Sachez que votre application peut devenir extrêmement intéressante si vous hébergez cette base de données sur un serveur distant. Cette manipulation vous permettra de créer des applications partagés de la même manière qu'un client/serveur.
Téléchargement

Télécharger le projet "comment se connecter à une base de données MySQL local en C#" :

    - TutoMySQL-dotnet.zip (sous Visual Studio 2012)
    - Fichier SQL (.sql) de la base de données à importer dans PhpMyAdmin


Attention à bien écouter ce que je vais dire car sinon vous risquez de rencontrer des difficultés ...

1 - Votre premier objectif est de faire fonctionner ce code.
2 - Est-ce que tous les using sont indispensables ? Précisez.
3 - Maintenant il vous reste à implémenter la base café et à réaliser une interface simple pour ajouter, supprimer un serveur et obtenir la liste des serveurs.
4 - Réaliser ce T.P. en utilisant la base de données de votre voisin.