using MySql.Data.MySqlClient; using System; using System.Collections.Generic; namespace projet.bddmanager { /// /// Singleton : connexion à la base de données et exécution des requêtes /// public class BddManager { /// /// instance unique de la classe /// private static BddManager instance = null; /// /// objet de connexion à la BDD à partir d'une chaîne de connexion /// private readonly MySqlConnection connection; /// /// Constructeur pour créer la connexion à la BDD et l'ouvrir /// /// chaine de connexion private BddManager(string stringConnect) { connection = new MySqlConnection(stringConnect); connection.Open(); } /// /// Création d'une seule instance de la classe /// /// chaine de connexion /// instance unique de la classe public static BddManager GetInstance(string stringConnect) { if (instance == null) { instance = new BddManager(stringConnect); } return instance; } /// /// Exécution d'une requête de type LCT (begin transaction...) /// /// requête public void ReqControle(string stringQuery) { MySqlCommand command = new MySqlCommand(stringQuery, connection); command.ExecuteNonQuery(); } /// /// Exécution d'une requête de type LMD (insert, update, delete) /// /// requête /// dictionnire contenant les parametres public void ReqUpdate(string stringQuery, Dictionary parameters = null) { MySqlCommand command = new MySqlCommand(stringQuery, connection); if (!(parameters is null)) { foreach (KeyValuePair parameter in parameters) { command.Parameters.Add(new MySqlParameter(parameter.Key, parameter.Value)); } } command.Prepare(); command.ExecuteNonQuery(); } /// /// Execution d'une requête de type LID (select) /// /// requête /// dictoinnaire contenant les parametres /// liste de tableaux d'objets contenant les valeurs des colonnes public List ReqSelect(string stringQuery, Dictionary parameters = null) { MySqlCommand command = new MySqlCommand(stringQuery, connection); if (!(parameters is null)) { foreach (KeyValuePair parameter in parameters) { command.Parameters.Add(new MySqlParameter(parameter.Key, parameter.Value)); } } command.Prepare(); MySqlDataReader reader = command.ExecuteReader(); int nbCols = reader.FieldCount; List records = new List(); while (reader.Read()) { Object[] attributs = new Object[nbCols]; reader.GetValues(attributs); records.Add(attributs); } reader.Close(); return records; } } }