Projet TTPA (Table Tennis Performance Analyser)  1.3
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

Q_INVOKABLE bool estConnecte ()
 
Q_INVOKABLE void deconnecter ()
 
Q_INVOKABLE bool estOuvert ()
 
Q_INVOKABLE bool ouvrir (QString fichierBase)
 
Q_INVOKABLE bool executer (QString requete)
 
Q_INVOKABLE bool recuperer (QString requete, QString &donnees)
 
Q_INVOKABLE bool recuperer (QString requete, QStringList &donnees)
 
Q_INVOKABLE bool recuperer (QString requete, QVector< QString > &donnees)
 
Q_INVOKABLE bool recuperer (QString requete, QVector< QStringList > &donnees)
 

Fonctions membres publiques statiques

static BaseDeDonneesgetInstance ()
 
static void detruireInstance ()
 

Fonctions membres privées

 BaseDeDonnees ()
 
 ~BaseDeDonnees ()
 
QSqlDatabase getNomBDD ()
 

Attributs privés

QSqlDatabase db
 
QString nomBDD
 
QMutex mutex
 

Attributs privés statiques

static BaseDeDonneesbaseDeDonnees = NULL
 
static int nbAcces = 0
 

Documentation des constructeurs et destructeur

◆ BaseDeDonnees()

BaseDeDonnees::BaseDeDonnees ( )
private

Références db, et nomBDD.

Référencé par getInstance().

21 {
22  #ifdef DEBUG_BASEDEDONNEES
23  qDebug() << Q_FUNC_INFO;
24  #endif
25 
26  nomBDD = "qsqlite";
27  db = QSqlDatabase::addDatabase("QSQLITE", nomBDD);
28 }
QString nomBDD
Definition: BaseDeDonnees.h:52
QSqlDatabase db
Definition: BaseDeDonnees.h:51

◆ ~BaseDeDonnees()

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

Documentation des fonctions membres

◆ deconnecter()

void BaseDeDonnees::deconnecter ( )

Références getNomBDD(), et mutex.

Référencé par detruireInstance().

82 {
83  QMutexLocker verrou(&mutex);
84  if(getNomBDD().isOpen())
85  {
86  qDebug() << Q_FUNC_INFO << getNomBDD().driverName();
87  getNomBDD().close();
88  }
89 }
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ detruireInstance()

void BaseDeDonnees::detruireInstance ( )
static

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

Référencé par Joueurs::~Joueurs(), Parametres::~Parametres(), et Profils::~Profils().

51 {
52  if (baseDeDonnees != NULL)
53  {
54  if (nbAcces > 0)
55  {
56  nbAcces--;
57  }
58  }
59  #ifdef DEBUG_BASEDEDONNEES
60  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
61  #endif
62  if (nbAcces == 0)
63  {
65  delete baseDeDonnees;
66  baseDeDonnees = NULL;
67  }
68 }
static BaseDeDonnees * baseDeDonnees
Definition: BaseDeDonnees.h:49
static int nbAcces
Definition: BaseDeDonnees.h:50
Q_INVOKABLE void deconnecter()
Definition: BaseDeDonnees.cpp:81

◆ estConnecte()

bool BaseDeDonnees::estConnecte ( )

Références getNomBDD(), et mutex.

76 {
77  QMutexLocker verrou(&mutex);
78  return getNomBDD().isOpen();
79 }
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ estOuvert()

bool BaseDeDonnees::estOuvert ( )

Références getNomBDD(), et mutex.

92 {
93  QMutexLocker verrou(&mutex);
94  return getNomBDD().isOpen();
95 }
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ executer()

bool BaseDeDonnees::executer ( QString  requete)

Références db, getNomBDD(), et mutex.

Référencé par Joueurs::insererJoueur(), Parametres::insererParametres(), et Profils::insererProfil().

163 {
164  QMutexLocker verrou(&mutex);
165  QSqlQuery enregistrements(db);
166  bool estCorrect;
167 
168  if (getNomBDD().isOpen())
169  {
170  if(requete.contains("UPDATE") || requete.contains("INSERT") || requete.contains("DELETE"))
171  {
172  estCorrect = enregistrements.exec(requete);
173 
174  #ifdef DEBUG_BASEDEDONNEES
175  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(estCorrect)).arg(requete);
176  #endif
177 
178  if (estCorrect)
179  {
180  return true;
181  }
182  else
183  {
184  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(enregistrements.lastError().text()).arg(requete);
185 
186  return false;
187  }
188  }
189  else
190  {
191  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
192 
193  return false;
194  }
195  }
196  else
197  {
198  return false;
199  }
200 
201 }
QSqlDatabase db
Definition: BaseDeDonnees.h:51
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ getInstance()

BaseDeDonnees * BaseDeDonnees::getInstance ( )
static

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

Référencé par Joueurs::Joueurs(), Parametres::Parametres(), et Profils::Profils().

38 {
39  if (baseDeDonnees == NULL)
40  {
42  }
43  nbAcces++;
44  #ifdef DEBUG_BASEDEDONNEES
45  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
46  #endif
47  return baseDeDonnees;
48 }
static BaseDeDonnees * baseDeDonnees
Definition: BaseDeDonnees.h:49
BaseDeDonnees()
Definition: BaseDeDonnees.cpp:20
static int nbAcces
Definition: BaseDeDonnees.h:50

◆ getNomBDD()

QSqlDatabase BaseDeDonnees::getNomBDD ( )
private

Références nomBDD.

Référencé par deconnecter(), estConnecte(), estOuvert(), executer(), ouvrir(), et recuperer().

71 {
72  return QSqlDatabase::database(nomBDD, false);
73 }
QString nomBDD
Definition: BaseDeDonnees.h:52

◆ ouvrir()

bool BaseDeDonnees::ouvrir ( QString  fichierBase)

Références getNomBDD(), et mutex.

Référencé par Joueurs::Joueurs(), Parametres::Parametres(), et Profils::Profils().

98 {
99  if (getNomBDD().driverName() != "QSQLITE")
100  {
101  return false;
102  }
103 
104  QMutexLocker verrou(&mutex);
105  if(!getNomBDD().isOpen())
106  {
107  QFile sfile(QString("assets:/db") + QString("/" + fichierBase));
108  QFile dfile(QString("./" + fichierBase));
109 
110  // supprime le fichier destination
111  /*if (sfile.exists())
112  {
113  if (dfile.exists())
114  {
115  dfile.remove();
116  }
117  }*/
118 
119  // copie
120  if (sfile.exists())
121  {
122  sfile.copy(dfile.fileName());
123  bool retour = dfile.setPermissions(QFileDevice::ReadUser|QFileDevice::WriteUser|QFileDevice::ReadOther);
124  qDebug() << Q_FUNC_INFO << retour << dfile.permissions();
125  //QFileInfo info(dfile);
126  //qDebug() << Q_FUNC_INFO << "path" << info.absoluteFilePath();
127  QFile dossierApplication("/data/data/org.qtproject.TTPA");
128  retour = dossierApplication.setPermissions(QFileDevice::ReadUser|QFileDevice::WriteUser|QFileDevice::ExeUser|QFileDevice::ReadOther|QFileDevice::WriteOther|QFileDevice::ExeOther);
129  qDebug() << Q_FUNC_INFO << retour << dossierApplication.permissions();
130  QFile dossierFichiers("/data/data/org.qtproject.TTPA/files");
131  retour = dossierFichiers.setPermissions(QFileDevice::ReadUser|QFileDevice::WriteUser|QFileDevice::ExeUser|QFileDevice::ReadOther|QFileDevice::WriteOther|QFileDevice::ExeOther);
132  qDebug() << Q_FUNC_INFO << retour << dossierFichiers.permissions();
133  }
134 
135  getNomBDD().setDatabaseName(QString("./") + fichierBase);
136 
137  #ifdef DEBUG_BASEDEDONNEES
138  qDebug() << Q_FUNC_INFO << getNomBDD().databaseName();
139  #endif
140 
141  if(getNomBDD().open())
142  {
143  #ifdef DEBUG_BASEDEDONNEES
144  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Ouverture réussie de '%1'").arg(getNomBDD().databaseName());
145  #endif
146 
147  return true;
148  }
149  else
150  {
151  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : impossible d'ouvrir la base de données !");
152  return false;
153  }
154  }
155  else
156  {
157  return true;
158  }
159 }
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ recuperer() [1/4]

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

Références db, getNomBDD(), et mutex.

Référencé par Joueurs::insererJoueur(), Parametres::insererParametres(), Joueurs::recupererJoueurs(), Profils::recupererNomProfils(), et Parametres::recupererParametres().

207 {
208  QMutexLocker verrou(&mutex);
209  QSqlQuery enregistrements(db);
210  bool estCorrect;
211 
212  if (getNomBDD().isOpen())
213  {
214  if (requete.contains("SELECT"))
215  {
216  estCorrect = enregistrements.exec(requete);
217  #ifdef DEBUG_BASEDEDONNEES
218  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(estCorrect)).arg(requete);
219  #endif
220 
221  if (estCorrect)
222  {
223  // on se positionne sur l'enregistrement
224  enregistrements.first();
225 
226  // on vérifie l'état de l'enregistrement retourné
227  if(!enregistrements.isValid())
228  {
229  #ifdef DEBUG_BASEDEDONNEES
230  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
231  #endif
232 
233  return false;
234  }
235 
236  // on récupère sous forme de QString la valeur du champ
237  if (enregistrements.isNull(0))
238  {
239  #ifdef DEBUG_BASEDEDONNEES
240  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Aucun résultat !");
241  #endif
242 
243  return false;
244  }
245  donnees = enregistrements.value(0).toString();
246 
247  #ifdef DEBUG_BASEDEDONNEES
248  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
249  #endif
250 
251  return true;
252  }
253  else
254  {
255  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(enregistrements.lastError().text()).arg(requete);
256 
257  return false;
258  }
259  }
260  else
261  {
262  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
263  return false;
264  }
265  }
266  else
267  {
268  return false;
269  }
270 }
QSqlDatabase db
Definition: BaseDeDonnees.h:51
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ recuperer() [2/4]

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

Références db, getNomBDD(), et mutex.

276 {
277  QMutexLocker verrou(&mutex);
278  QSqlQuery enregistrements(db);
279  bool estCorrect;
280 
281  if (getNomBDD().isOpen())
282  {
283  if (requete.contains("SELECT"))
284  {
285  estCorrect = enregistrements.exec(requete);
286 
287  #ifdef DEBUG_BASEDEDONNEES
288  qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QStringList)> retour %1 pour la requete : %2").arg(QString::number(estCorrect)).arg(requete);
289  #endif
290 
291  if (estCorrect)
292  {
293  // on se positionne sur l'enregistrement
294  enregistrements.first();
295 
296  // on vérifie l'état de l'enregistrement retourné
297  if (!enregistrements.isValid())
298  {
299  #ifdef DEBUG_BASEDEDONNEES
300  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
301  #endif
302 
303  return false;
304  }
305 
306  // on récupère sous forme de QString la valeur de tous les champs sélectionnés
307  // et on les stocke dans une liste de QString
308  for(int i = 0; i < enregistrements.record().count(); i++)
309  {
310  if (!enregistrements.isNull(i))
311  {
312  donnees << enregistrements.value(i).toString();
313  }
314  }
315 
316  #ifdef DEBUG_BASEDEDONNEES
317  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
318  #endif
319 
320  return true;
321  }
322  else
323  {
324  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(enregistrements.lastError().text()).arg(requete);
325 
326  return false;
327  }
328  }
329  else
330  {
331  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
332 
333  return false;
334  }
335  }
336  else
337  {
338  return false;
339  }
340 }
QSqlDatabase db
Definition: BaseDeDonnees.h:51
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ recuperer() [3/4]

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

Références db, getNomBDD(), et mutex.

346 {
347  QMutexLocker verrou(&mutex);
348  QSqlQuery enregistrements(db);
349  bool estCorrect;
350  QString valeur;
351 
352  if (getNomBDD().isOpen())
353  {
354  if (requete.contains("SELECT"))
355  {
356  estCorrect = enregistrements.exec(requete);
357 
358  #ifdef DEBUG_BASEDEDONNEES
359  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(estCorrect)).arg(requete);
360  #endif
361 
362  if(estCorrect)
363  {
364  // pour chaque enregistrement
365  while (enregistrements.next() )
366  {
367  // on récupère sous forme de QString la valeur du champs sélectionné
368  valeur = enregistrements.value(0).toString();
369 
370  #ifdef DEBUG_BASEDEDONNEES
371  //qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
372  #endif
373 
374  // on stocke l'enregistrement dans le QVector
375  donnees.push_back(valeur);
376  }
377 
378  #ifdef DEBUG_BASEDEDONNEES
379  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
380  #endif
381 
382  return true;
383  }
384  else
385  {
386  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(enregistrements.lastError().text()).arg(requete);
387  return false;
388  }
389  }
390  else
391  {
392  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
393 
394  return false;
395  }
396  }
397  else
398  {
399  return false;
400  }
401 }
QSqlDatabase db
Definition: BaseDeDonnees.h:51
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

◆ recuperer() [4/4]

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

Références db, getNomBDD(), et mutex.

407 {
408  QMutexLocker verrou(&mutex);
409  QSqlQuery enregistrements(db);
410  bool estCorrect;
411  QStringList valeurs;
412 
413  if(getNomBDD().isOpen())
414  {
415  if (requete.contains("SELECT"))
416  {
417  estCorrect = enregistrements.exec(requete);
418  #ifdef DEBUG_BASEDEDONNEES
419  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(estCorrect)).arg(requete);
420  #endif
421 
422  if (estCorrect)
423  {
424  // pour chaque enregistrement
425  while (enregistrements.next() )
426  {
427  // on récupère sous forme de QString la valeur de tous les champs sélectionnés
428  // et on les stocke dans une liste de QString
429  for(int i=0; i < enregistrements.record().count(); i++)
430  {
431  valeurs << enregistrements.value(i).toString();
432  }
433 
434  #ifdef DEBUG_BASEDEDONNEES
435  //qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
436  /*for(int i=0;i<r.record().count();i++)
437  qDebug() << r.value(i).toString();*/
438  #endif
439 
440  // on stocke l'enregistrement dans le QVector
441  donnees.push_back(valeurs);
442 
443  // on efface la liste de QString pour le prochain enregistrement
444  valeurs.clear();
445  }
446 
447  #ifdef DEBUG_BASEDEDONNEES
448  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
449  #endif
450 
451  return true;
452  }
453  else
454  {
455  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(enregistrements.lastError().text()).arg(requete);
456 
457  return false;
458  }
459  }
460  else
461  {
462  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
463 
464  return false;
465  }
466  }
467  else
468  {
469  return false;
470  }
471 }
QSqlDatabase db
Definition: BaseDeDonnees.h:51
QMutex mutex
Definition: BaseDeDonnees.h:53
QSqlDatabase getNomBDD()
Definition: BaseDeDonnees.cpp:70

Documentation des données membres

◆ baseDeDonnees

BaseDeDonnees * BaseDeDonnees::baseDeDonnees = NULL
staticprivate

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

◆ db

QSqlDatabase BaseDeDonnees::db
private

Référencé par BaseDeDonnees(), executer(), et recuperer().

◆ mutex

QMutex BaseDeDonnees::mutex
private

◆ nbAcces

int BaseDeDonnees::nbAcces = 0
staticprivate

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

◆ nomBDD

QString BaseDeDonnees::nomBDD
private

Référencé par BaseDeDonnees(), et getNomBDD().


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