105 lines
No EOL
3.7 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
} |