Projet ROV'NET  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

Déclaration de la classe BaseDeDonnees. Plus de détails...

#include <basededonnees.h>

Graphe de collaboration de BaseDeDonnees:
Collaboration graph

Fonctions membres publiques

bool estConnecte ()
 
bool connecter (QString nomBase, QString username=BDD_USERNAME, QString password=BDD_PASSWORD, QString serveur=BDD_HOSTNAME)
 
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 = nullptr
 
static QString typeBase = "QMYSQL"
 
static int nbAcces = 0
 

Description détaillée

Auteur
Thierry VAIRA
Version
1.1

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:69
static QString typeBase
Definition: basededonnees.h:66

◆ ~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,
QString  username = BDD_USERNAME,
QString  password = BDD_PASSWORD,
QString  serveur = BDD_HOSTNAME 
)

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

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

◆ detruireInstance()

void BaseDeDonnees::detruireInstance ( )
static

Références baseDeDonnees, et nbAcces.

Référencé par IHMRov::~IHMRov(), et Rov::~Rov().

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

◆ estConnecte()

bool BaseDeDonnees::estConnecte ( )

Références db, et mutex.

70 {
71  QMutexLocker verrou(&mutex);
72  return db.isOpen();
73 }
QSqlDatabase db
Definition: basededonnees.h:69
QMutex mutex
Definition: basededonnees.h:70

◆ estOuvert()

bool BaseDeDonnees::estOuvert ( )

Références db, et mutex.

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

112 {
113  QMutexLocker verrou(&mutex);
114  return db.isOpen();
115 }
QSqlDatabase db
Definition: basededonnees.h:69
QMutex mutex
Definition: basededonnees.h:70

◆ executer()

bool BaseDeDonnees::executer ( QString  requete)

Références db, et mutex.

Référencé par Rov::creerNouvelleCampagne(), et Rov::stockeMesuresBDD().

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

◆ getInstance()

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

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

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

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

◆ ouvrir()

bool BaseDeDonnees::ouvrir ( QString  fichierBase)

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

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

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

◆ recuperer() [1/4]

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

Références db, et mutex.

Référencé par Rov::creerNouvelleCampagne(), Rov::recupererListeNomsOperateurs(), Rov::recupererListePrenomsOperateurs(), et Rov::testerRequete().

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

◆ recuperer() [2/4]

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

Références db, et mutex.

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

◆ recuperer() [3/4]

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

Références db, et mutex.

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

◆ recuperer() [4/4]

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

Références db, et mutex.

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

Documentation des données membres

◆ baseDeDonnees

BaseDeDonnees * BaseDeDonnees::baseDeDonnees = nullptr
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 :