Projet e-stock  0.2
BTS SNIR LaSalle Avignon 2020
Référence de la classe Bdd

Déclaration de la classe utilisant la base de données. Plus de détails...

#include <Bdd.h>

Graphe de collaboration de Bdd:
Collaboration graph

Fonctions membres publiques

bool connecter ()
 Définition méthose connecter() Plus de détails...
 
bool estConnecte ()
 retourne l'état de connexion à la base de données Plus de détails...
 
bool executer (QString requete)
 exécute une requête SQL de type UPDATE, INSERT et DELETE Plus de détails...
 
bool recuperer (QString requete, QString &donnees)
 exécute une requête SQL de type SELECT et récupère un champ d'un seul enregistrement Plus de détails...
 
bool recuperer (QString requete, QStringList &donnees)
 exécute une requête SQL de type SELECT et récupère plusieurs champs d'un seul enregistrement Plus de détails...
 
bool recuperer (QString requete, QVector< QString > &donnees)
 exécute une requête SQL de type SELECT et récupère un seul champ de plusieurs enregistrements Plus de détails...
 
bool recuperer (QString requete, QVector< QStringList > &donnees)
 exécute une requête SQL de type SELECT et récupère plusieurs champs de plusieurs enregistrements Plus de détails...
 

Fonctions membres publiques statiques

static void detruireInstance ()
 Définition méthode detruireInstance() Plus de détails...
 
static BddgetInstance ()
 Définition méthode getInstance() Plus de détails...
 

Fonctions membres privées

 Bdd ()
 Définition du constructeur de la classe Bdd. Plus de détails...
 
 ~Bdd ()
 Définition du destructeur de la classe Bdd. Plus de détails...
 

Attributs privés

QSqlDatabase db
 pour la connexion à la base de données MySQL Plus de détails...
 

Attributs privés statiques

static Bddbdd = NULL
 pointeur sur l'instance unique Plus de détails...
 
static int nbAcces = 0
 compte le nombre d'accès à l'instance unique Plus de détails...
 

Description détaillée

Déclaration de la classe utilisant la base de données.

Auteur
Legger Pierre-Antoine
Tranchat Joffrey
Version
1.0
Date
Vendredi 14 Février

Définition à la ligne 42 du fichier Bdd.h.

Documentation des constructeurs et destructeur

◆ Bdd()

Bdd::Bdd ( )
private

Définition du constructeur de la classe Bdd.

initialise le type MySQL pour la connexion à la base de données

Définition à la ligne 27 du fichier Bdd.cpp.

Références db.

Référencé par getInstance().

28 {
29  #ifdef DEBUG_BDD
30  qDebug() << Q_FUNC_INFO;
31  #endif
32  db = QSqlDatabase::addDatabase("QMYSQL");
33 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ ~Bdd()

Bdd::~Bdd ( )
private

Définition du destructeur de la classe Bdd.

destructeur de la classe Bdd

Définition à la ligne 40 du fichier Bdd.cpp.

41 {
42  #ifdef DEBUG_BDD
43  qDebug() << Q_FUNC_INFO;
44  #endif
45 }

Documentation des fonctions membres

◆ connecter()

bool Bdd::connecter ( )

Définition méthose connecter()

permet de se connecter à la base de données

Renvoie
boolean

Définition à la ligne 93 du fichier Bdd.cpp.

Références DATABASENAME, db, HOSTNAME, PASSWORD, et USERNAME.

Référencé par Supervision::Supervision().

94 {
95  if(!db.isOpen())
96  {
97  db.setHostName(HOSTNAME);
98  db.setUserName(USERNAME);
99  db.setPassword(PASSWORD);
100  db.setDatabaseName(DATABASENAME);
101 
102  #ifdef DEBUG_BDD
103  qDebug() << Q_FUNC_INFO << "HostName" << db.hostName();
104  qDebug() << Q_FUNC_INFO << "UserName" << db.userName();
105  qDebug() << Q_FUNC_INFO << "DatabaseName" << db.databaseName();
106  #endif
107  if(db.open())
108  {
109  #ifdef DEBUG_BDD
110  qDebug() << Q_FUNC_INFO << QString::fromUtf8("connexion réussie à %1").arg(db.hostName());
111  #endif
112 
113  return true;
114  }
115  else
116  {
117  qDebug() << Q_FUNC_INFO << QString::fromUtf8("erreur : impossible de se connecter à la base de données !");
118 
119  QMessageBox::critical(0, QString::fromUtf8("e-stock"), QString::fromUtf8("Impossible de se connecter à la base de données !"));
120  return false;
121  }
122 
123  }
124  else
125  return true;
126 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63
#define DATABASENAME
Definition: Bdd.h:13
#define USERNAME
Definition: Bdd.h:11
#define PASSWORD
Definition: Bdd.h:12
#define HOSTNAME
Definition: Bdd.h:10

◆ detruireInstance()

void Bdd::detruireInstance ( )
static

Définition méthode detruireInstance()

détruit l'instance de la Bdd si elle existe et si personne l'utilise

Définition à la ligne 73 du fichier Bdd.cpp.

Références bdd, et nbAcces.

Référencé par Armoire::~Armoire().

74 {
75  if(bdd != NULL)
76  {
77  nbAcces--;
78  #ifdef DEBUG_BASEDEDONNEES
79  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
80  #endif
81 
82  if(nbAcces == 0)
83  delete bdd;
84  }
85 }
static int nbAcces
compte le nombre d&#39;accès à l&#39;instance unique
Definition: Bdd.h:65
static Bdd * bdd
pointeur sur l&#39;instance unique
Definition: Bdd.h:64

◆ estConnecte()

bool Bdd::estConnecte ( )

retourne l'état de connexion à la base de données

retourne l'état de connexion à la base de données

Renvoie
boolean true si connecté à la base de données sinon false

Définition à la ligne 134 du fichier Bdd.cpp.

Références db.

135 {
136  return db.isOpen();
137 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ executer()

bool Bdd::executer ( QString  requete)

exécute une requête SQL de type UPDATE, INSERT et DELETE

exécute une requête SQL de type UPDATE, INSERT et DELETE

Paramètres
[in]requeteune requête SQL de type UPDATE, INSERT et DELETE
Renvoie
boolean true si la requête a été exécutée avec succès sinon false

Définition à la ligne 146 du fichier Bdd.cpp.

Références db.

Référencé par Supervision::getInformationsArmoire(), et Article::mettreAJourQuantite().

147 {
148  QSqlQuery r;
149  bool retour;
150 
151  if(db.isOpen())
152  {
153  if(requete.contains("UPDATE") || requete.contains("INSERT") || requete.contains("DELETE"))
154  {
155  retour = r.exec(requete);
156  #ifdef DEBUG_BASEDEDONNEES
157  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
158  #endif
159  if(retour)
160  {
161  return true;
162  }
163  else
164  {
165  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
166  return false;
167  }
168  }
169  else
170  {
171  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
172  return false;
173  }
174  }
175  else
176  return false;
177 
178 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ getInstance()

Bdd * Bdd::getInstance ( )
static

Définition méthode getInstance()

permet l'instanciation d'un objet Bdd en vérifiant qu'il n'en existe pas déja un

Renvoie
bdd l'instance unique

Définition à la ligne 53 du fichier Bdd.cpp.

Références Bdd(), bdd, et nbAcces.

Référencé par Armoire::Armoire(), et Supervision::Supervision().

54 {
55  if(bdd == NULL)
56  bdd = new Bdd();
57 
58  nbAcces++;
59 
60  #ifdef DEBUG_BDD
61  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
62  #endif
63 
64  return bdd;
65 
66 }
Bdd()
Définition du constructeur de la classe Bdd.
Definition: Bdd.cpp:27
static int nbAcces
compte le nombre d&#39;accès à l&#39;instance unique
Definition: Bdd.h:65
static Bdd * bdd
pointeur sur l&#39;instance unique
Definition: Bdd.h:64

◆ recuperer() [1/4]

bool Bdd::recuperer ( QString  requete,
QString &  donnees 
)

exécute une requête SQL de type SELECT et récupère un champ d'un seul enregistrement

Paramètres
[in]requeteune requête SQL de type SELECT
[out]donneesle champ QString récupéré
Renvoie
boolean true si la requête a été exécutée avec succès sinon false

Définition à la ligne 187 du fichier Bdd.cpp.

Références db.

Référencé par Supervision::connecterSignauxSlots(), Supervision::getInformationsArmoire(), Armoire::recupererArmoire(), Article::recupererDonneesArticle(), Article::recupererDonneesArticleParNom(), Article::recupererDonneesArticleParNumeroCasier(), Article::recupererNombreCasiersPourIdArticle(), Article::recupererNombreCasiersPourNomArticle(), Article::recupererNumeroCasierPourIdArticle(), et Article::recupererNumeroCasierPourNomArticle().

188 {
189  QSqlQuery r;
190  bool retour;
191 
192  if(db.isOpen())
193  {
194  if(requete.contains("SELECT"))
195  {
196  retour = r.exec(requete);
197  #ifdef DEBUG_BASEDEDONNEES
198  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
199  #endif
200  if(retour)
201  {
202  // on se positionne sur l'enregistrement
203  r.first();
204 
205  // on vérifie l'état de l'enregistrement retourné
206  if(!r.isValid())
207  {
208  #ifdef DEBUG_BASEDEDONNEES
209  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
210  #endif
211  return false;
212  }
213 
214  // on récupère sous forme de QString la valeur du champ
215  if(r.isNull(0))
216  {
217  #ifdef DEBUG_BASEDEDONNEES
218  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Aucun résultat !");
219  #endif
220  return false;
221  }
222  donnees = r.value(0).toString();
223  #ifdef DEBUG_BASEDEDONNEES
224  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
225  #endif
226  return true;
227  }
228  else
229  {
230  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
231  return false;
232  }
233  }
234  else
235  {
236  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
237  return false;
238  }
239  }
240  else
241  return false;
242 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ recuperer() [2/4]

bool Bdd::recuperer ( QString  requete,
QStringList &  donnees 
)

exécute une requête SQL de type SELECT et récupère plusieurs champs d'un seul enregistrement

Paramètres
[in]requeteune requête SQL de type SELECT
[out]donneesplusieurs champs d'un seul enregistrement dans un QStringList
Renvoie
boolean true si la requête a été exécutée avec succès sinon false

Définition à la ligne 251 du fichier Bdd.cpp.

Références db.

252 {
253  QSqlQuery r;
254  bool retour;
255 
256  if(db.isOpen())
257  {
258  if(requete.contains("SELECT"))
259  {
260  retour = r.exec(requete);
261  #ifdef DEBUG_BASEDEDONNEES
262  qDebug() << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
263  #endif
264  if(retour)
265  {
266  // on se positionne sur l'enregistrement
267  r.first();
268 
269  // on vérifie l'état de l'enregistrement retourné
270  if(!r.isValid())
271  {
272  #ifdef DEBUG_BASEDEDONNEES
273  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
274  #endif
275  return false;
276  }
277 
278  // on récupère sous forme de QString la valeur de tous les champs sélectionnés
279  // et on les stocke dans une liste de QString
280  for(int i=0;i<r.record().count();i++)
281  if(!r.isNull(i))
282  donnees << r.value(i).toString();
283  #ifdef DEBUG_BASEDEDONNEES
284  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
285  #endif
286  return true;
287  }
288  else
289  {
290  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
291  return false;
292  }
293  }
294  else
295  {
296  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
297  return false;
298  }
299  }
300  else
301  return false;
302 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ recuperer() [3/4]

bool Bdd::recuperer ( QString  requete,
QVector< QString > &  donnees 
)

exécute une requête SQL de type SELECT et récupère un seul champ de plusieurs enregistrements

Paramètres
[in]requeteune requête SQL de type SELECT
[out]donneesun seul champ de plusieurs enregistrements dans un QVector de QString
Renvoie
boolean true si la requête a été exécutée avec succès sinon false

Définition à la ligne 311 du fichier Bdd.cpp.

Références db.

312 {
313  QSqlQuery r;
314  bool retour;
315  QString data;
316 
317  if(db.isOpen())
318  {
319  if(requete.contains("SELECT"))
320  {
321  retour = r.exec(requete);
322  #ifdef DEBUG_BASEDEDONNEES
323  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
324  #endif
325  if(retour)
326  {
327  // pour chaque enregistrement
328  while ( r.next() )
329  {
330  // on récupère sous forme de QString la valeur du champs sélectionné
331  data = r.value(0).toString();
332 
333  #ifdef DEBUG_BASEDEDONNEES
334  //qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
335  #endif
336 
337  // on stocke l'enregistrement dans le QVector
338  donnees.push_back(data);
339  }
340  #ifdef DEBUG_BASEDEDONNEES
341  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
342  #endif
343  return true;
344  }
345  else
346  {
347  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
348  return false;
349  }
350  }
351  else
352  {
353  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
354  return false;
355  }
356  }
357  else
358  return false;
359 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

◆ recuperer() [4/4]

bool Bdd::recuperer ( QString  requete,
QVector< QStringList > &  donnees 
)

exécute une requête SQL de type SELECT et récupère plusieurs champs de plusieurs enregistrements

Paramètres
[in]requeteune requête SQL de type SELECT
[out]donnees: plusieurs champs de plusieurs enregistrements dans un QVector de QStringList
Renvoie
boolean true si la requête a été exécutée avec succès sinon false

Définition à la ligne 367 du fichier Bdd.cpp.

Références db.

368 {
369  QSqlQuery r;
370  bool retour;
371  QStringList data;
372 
373  if(db.isOpen())
374  {
375  if(requete.contains("SELECT"))
376  {
377  retour = r.exec(requete);
378  #ifdef DEBUG_BASEDEDONNEES
379  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
380  #endif
381  if(retour)
382  {
383  // pour chaque enregistrement
384  while ( r.next() )
385  {
386  // on récupère sous forme de QString la valeur de tous les champs sélectionnés
387  // et on les stocke dans une liste de QString
388  for(int i=0;i<r.record().count();i++)
389  data << r.value(i).toString();
390 
391  #ifdef DEBUG_BASEDEDONNEES
392  //qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
393  /*for(int i=0;i<r.record().count();i++)
394  qDebug() << r.value(i).toString();*/
395  #endif
396 
397  // on stocke l'enregistrement dans le QVector
398  donnees.push_back(data);
399 
400  // on efface la liste de QString pour le prochain enregistrement
401  data.clear();
402  }
403  #ifdef DEBUG_BASEDEDONNEES
404  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
405  #endif
406  return true;
407  }
408  else
409  {
410  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
411  return false;
412  }
413  }
414  else
415  {
416  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
417  return false;
418  }
419  }
420  else
421  return false;
422 }
QSqlDatabase db
pour la connexion à la base de données MySQL
Definition: Bdd.h:63

Documentation des données membres

◆ bdd

Bdd * Bdd::bdd = NULL
staticprivate

pointeur sur l'instance unique

Définition à la ligne 64 du fichier Bdd.h.

Référencé par detruireInstance(), et getInstance().

◆ db

QSqlDatabase Bdd::db
private

pour la connexion à la base de données MySQL

Définition à la ligne 63 du fichier Bdd.h.

Référencé par Bdd(), connecter(), estConnecte(), executer(), et recuperer().

◆ nbAcces

int Bdd::nbAcces = 0
staticprivate

compte le nombre d'accès à l'instance unique

Définition à la ligne 65 du fichier Bdd.h.

Référencé par detruireInstance(), et getInstance().


La documentation de cette classe a été générée à partir des fichiers suivants :