Projet Bee-Honey't  1.0
BTS SN 2019
Fonctions membres publiques | Fonctions membres publiques statiques | Fonctions membres privées | Attributs privés | Attributs privés statiques | Liste de tous les membres
Référence de la classe BaseDeDonnees

#include <baseDeDonnees.h>

Graphe de collaboration de BaseDeDonnees:
Collaboration graph

Fonctions membres publiques

bool estConnecte ()
 
bool connecter (QString nomBase=BDD_NOMBASE, QString username=BDD_USERNAME, QString password=BDD_PASSWORD, QString serveur=BDD_SERVEUR)
 
bool estOuvert ()
 
bool ouvrir (QString fichierBase)
 
bool executer (QString requete)
 
bool recuperer (QString requete, QString &donnees)
 
bool recuperer (QString requete, QStringList &donnees)
 
bool recuperer (QString requete, QVector< QString > &donnees)
 
bool recuperer (QString requete, QVector< QStringList > &donnees)
 

Fonctions membres publiques statiques

static BaseDeDonneesgetInstance (QString type="QMYSQL")
 
static void detruireInstance ()
 

Fonctions membres privées

 BaseDeDonnees (QString type)
 
 ~BaseDeDonnees ()
 

Attributs privés

QSqlDatabase db
 
QMutex mutex
 

Attributs privés statiques

static BaseDeDonneesbaseDeDonnees = NULL
 
static QString typeBase = "QMYSQL"
 
static int nbAcces = 0
 

Documentation des constructeurs et destructeur

◆ BaseDeDonnees()

BaseDeDonnees::BaseDeDonnees ( QString  type)
private

Références db, et typeBase.

Référencé par getInstance().

23 {
24  #ifdef DEBUG_BASEDEDONNEES
25  qDebug() << Q_FUNC_INFO << type;
26  #endif
27  db = QSqlDatabase::addDatabase(type);
28  typeBase = type;
29 }
QSqlDatabase db
Definition: baseDeDonnees.h:55
static QString typeBase
Definition: baseDeDonnees.h:52

◆ ~BaseDeDonnees()

BaseDeDonnees::~BaseDeDonnees ( )
private
32 {
33  #ifdef DEBUG_BASEDEDONNEES
34  qDebug() << Q_FUNC_INFO;
35  #endif
36 }

Documentation des fonctions membres

◆ connecter()

bool BaseDeDonnees::connecter ( QString  nomBase = BDD_NOMBASE,
QString  username = BDD_USERNAME,
QString  password = BDD_PASSWORD,
QString  serveur = BDD_SERVEUR 
)

Références APP_TITRE, db, mutex, et typeBase.

Référencé par Alertes::Alertes(), NouvelleRucheIhm::NouvelleRucheIhm(), ReglagesAlertesIhm::ReglagesAlertesIhm(), Ruche::Ruche(), et RucheIhm::RucheIhm().

77 {
78  if(typeBase != "QMYSQL")
79  return false;
80  QMutexLocker verrou(&mutex);
81  if(!db.isOpen())
82  {
83  db.setHostName(serveur);
84  db.setUserName(username);
85  db.setPassword(password);
86  db.setDatabaseName(nomBase);
87 
88  #ifdef DEBUG_BASEDEDONNEES
89  qDebug() << Q_FUNC_INFO;
90  qDebug() << "HostName : " << db.hostName();
91  qDebug() << "UserName : " << db.userName();
92  qDebug() << "DatabaseName : " << db.databaseName();
93  #endif
94  if(db.open())
95  {
96  #ifdef DEBUG_BASEDEDONNEES
97  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Connexion réussie à %1").arg(db.hostName());
98  #endif
99  return true;
100  }
101  else
102  {
103  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : impossible de se connecter à la base de données !");
104  QMessageBox::critical(0, QString::fromUtf8(APP_TITRE), QString::fromUtf8("Impossible de se connecter à la base de données !"));
105  return false;
106  }
107  }
108  else
109  return true;
110 }
#define APP_TITRE
Definition: parametres.h:17
QSqlDatabase db
Definition: baseDeDonnees.h:55
static QString typeBase
Definition: baseDeDonnees.h:52
QMutex mutex
Definition: baseDeDonnees.h:56

◆ detruireInstance()

void BaseDeDonnees::detruireInstance ( )
static

Références baseDeDonnees, et nbAcces.

Référencé par Alertes::~Alertes(), NouvelleRucheIhm::~NouvelleRucheIhm(), ReglagesAlertesIhm::~ReglagesAlertesIhm(), Ruche::~Ruche(), et RucheIhm::~RucheIhm().

52 {
53  // instance ?
54  if(baseDeDonnees != NULL)
55  {
56  if(nbAcces > 0)
57  nbAcces--;
58  #ifdef DEBUG_BASEDEDONNEES
59  qDebug() << Q_FUNC_INFO << "nbAcces restants" << nbAcces;
60  #endif
61  // dernier ?
62  if(nbAcces == 0)
63  {
64  delete baseDeDonnees;
65  baseDeDonnees = NULL;
66  }
67  }
68 }
static BaseDeDonnees * baseDeDonnees
Definition: baseDeDonnees.h:51
static int nbAcces
Definition: baseDeDonnees.h:53

◆ estConnecte()

bool BaseDeDonnees::estConnecte ( )

Références db, et mutex.

Référencé par Alertes::Alertes(), NouvelleRucheIhm::NouvelleRucheIhm(), ReglagesAlertesIhm::ReglagesAlertesIhm(), Ruche::Ruche(), et RucheIhm::RucheIhm().

71 {
72  QMutexLocker verrou(&mutex);
73  return db.isOpen();
74 }
QSqlDatabase db
Definition: baseDeDonnees.h:55
QMutex mutex
Definition: baseDeDonnees.h:56

◆ estOuvert()

bool BaseDeDonnees::estOuvert ( )

Références db, et mutex.

113 {
114  QMutexLocker verrou(&mutex);
115  return db.isOpen();
116 }
QSqlDatabase db
Definition: baseDeDonnees.h:55
QMutex mutex
Definition: baseDeDonnees.h:56

◆ executer()

bool BaseDeDonnees::executer ( QString  requete)

Références db, et mutex.

Référencé par Ruche::insererDonneesPortBatterie(), Ruche::insererDonneesPortEnsoleillement(), Ruche::insererDonneesPortMesureEnvironnement(), Ruche::insererDonneesPortMesureRuche(), Ruche::insererDonneesPortPoids(), Ruche::insererMesureHoraireEnsoleillement(), Ruche::insererMesureHoraireEnvironnement(), Ruche::insererMesureHoraireRuche(), NouvelleRucheIhm::recevoirDonneeAjoutRuche(), ReglagesAlertesIhm::recevoirReglagesAlertes(), et RucheIhm::supprimerRuche().

151 {
152  QMutexLocker verrou(&mutex);
153  QSqlQuery r;
154  bool retour;
155 
156  if(db.isOpen())
157  {
158  if(requete.contains("UPDATE") || requete.contains("INSERT") || requete.contains("DELETE"))
159  {
160  retour = r.exec(requete);
161  #ifdef DEBUG_BASEDEDONNEES
162  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
163  #endif
164  if(retour)
165  {
166  return true;
167  }
168  else
169  {
170  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
171  return false;
172  }
173  }
174  else
175  {
176  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
177  return false;
178  }
179  }
180  else
181  return false;
182 
183 }
QSqlDatabase db
Definition: baseDeDonnees.h:55
QMutex mutex
Definition: baseDeDonnees.h:56

◆ getInstance()

BaseDeDonnees * BaseDeDonnees::getInstance ( QString  type = "QMYSQL")
static

Références BaseDeDonnees(), baseDeDonnees, et nbAcces.

Référencé par Alertes::Alertes(), NouvelleRucheIhm::NouvelleRucheIhm(), ReglagesAlertesIhm::ReglagesAlertesIhm(), Ruche::Ruche(), et RucheIhm::RucheIhm().

39 {
40  if(baseDeDonnees == NULL)
41  baseDeDonnees = new BaseDeDonnees(type);
42 
43  nbAcces++;
44  #ifdef DEBUG_BASEDEDONNEES
45  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
46  #endif
47 
48  return baseDeDonnees;
49 }
static BaseDeDonnees * baseDeDonnees
Definition: baseDeDonnees.h:51
BaseDeDonnees(QString type)
Definition: baseDeDonnees.cpp:22
static int nbAcces
Definition: baseDeDonnees.h:53

◆ ouvrir()

bool BaseDeDonnees::ouvrir ( QString  fichierBase)

Références db, mutex, et typeBase.

119 {
120  if(typeBase != "QSQLITE")
121  return false;
122  QMutexLocker verrou(&mutex);
123  if(!db.isOpen())
124  {
125  db.setDatabaseName(fichierBase);
126 
127  #ifdef DEBUG_BASEDEDONNEES
128  qDebug() << Q_FUNC_INFO << db.databaseName();
129  #endif
130  if(db.open())
131  {
132  #ifdef DEBUG_BASEDEDONNEES
133  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Ouvertir réussie à %1").arg(db.databaseName());
134  #endif
135 
136  return true;
137  }
138  else
139  {
140  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : impossible d'ouvrir la base de données !");
141  QMessageBox::critical(0, QString::fromUtf8("BaseDeDonnees"), QString::fromUtf8("Impossible d'ouvrir la base de données !"));
142  return false;
143  }
144  }
145  else
146  return true;
147 }
QSqlDatabase db
Definition: baseDeDonnees.h:55
static QString typeBase
Definition: baseDeDonnees.h:52
QMutex mutex
Definition: baseDeDonnees.h:56

◆ recuperer() [1/4]

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

Références db, et mutex.

Référencé par RucheIhm::afficherMesuresJournalieresEnsoleillement(), RucheIhm::afficherMesuresJournalieresEnvironement(), RucheIhm::afficherMesuresJournalieresRuche(), Alertes::Alertes(), RucheIhm::mettreAjourListeRuches(), NouvelleRucheIhm::NouvelleRucheIhm(), et NouvelleRucheIhm::recevoirDonneeAjoutRuche().

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

◆ recuperer() [2/4]

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

Références db, et mutex.

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

◆ recuperer() [3/4]

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

Références db, et mutex.

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

◆ recuperer() [4/4]

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

Références db, et mutex.

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

Documentation des données membres

◆ baseDeDonnees

BaseDeDonnees * BaseDeDonnees::baseDeDonnees = NULL
staticprivate

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

◆ db

QSqlDatabase BaseDeDonnees::db
private

◆ mutex

QMutex BaseDeDonnees::mutex
private

◆ nbAcces

int BaseDeDonnees::nbAcces = 0
staticprivate

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

◆ typeBase

QString BaseDeDonnees::typeBase = "QMYSQL"
staticprivate

Référencé par BaseDeDonnees(), connecter(), et ouvrir().


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