mediatek86/Mediatek86/bddmanager/BddManager.cs

105 lines
No EOL
3.7 KiB
C#

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