ROV'NET  0.2
BTS SNIR LaSalle Avignon 2020
Référence de la classe BaseDeDonnees

Class permettant de s'interfacer avec la base de données. Plus de détails...

#include "basededonnees.h"

Graphe de collaboration de BaseDeDonnees:
Collaboration graph

Fonctions membres publiques

bool estOuvert ()
 Permet de savoir si la base de données est ouverte ou non. Plus de détails...
 
bool executer (QString requete)
 Permet d'executer la requete passé en paramètre au format SQL. Plus de détails...
 
bool ouvrir (QString fichierBase)
 Permet d'ouvrir le fichier de base de données passé en paramètre. Plus de détails...
 
bool recuperer (QString requete, QString &donnees)
 Permet d'executer la requete passé en paramètre au format SQL, et remplit le QString de sa réponse. Cette requête permet de récuperer un champs d'un enregistrement. Plus de détails...
 
bool recuperer (QString requete, QStringList &donnees)
 Permet d'executer la requete passé en paramètre au format SQL, et remplit le QStringListe de sa réponse. Cette requête permet de récuperer plusieurs champs d'un enregistrement. Plus de détails...
 
bool recuperer (QString requete, QVector< QString > &donnees)
 Permet d'executer la requete passé en paramètre au format SQL, et remplit le QVector<QString> de sa réponse. Cette requête permet de récuperer un champs de plusieurs enregistrements. Plus de détails...
 
bool recuperer (QString requete, QVector< QStringList > &donnees)
 Permet d'executer la requete passé en paramètre au format SQL, et remplit le QVector<QStringList> de sa réponse. Cette requête permet de récuperer plusieurs champs de plusieurs enregistrements. Plus de détails...
 

Fonctions membres publiques statiques

static void detruireInstance ()
 Permet de detruire l'instance en cours, Static elle est accessible depuis n'importe où Plus de détails...
 
static BaseDeDonneesgetInstance (QString type="QSQLITE")
 Permet de créer une instance de BDD ou de récuperer celle deja en cours, cette méthode controle l'instanciation des objet BaseDeDonnees. Static elle est accessible depuis n'importe où Plus de détails...
 

Fonctions membres privées

 BaseDeDonnees (QString type)
 Constructeur de la classe BaseDeDonnees en privé afin de controller ses appels. Plus de détails...
 
 ~BaseDeDonnees ()
 Destructeur de la classe BaseDeDonnees. Plus de détails...
 

Attributs privés

QSqlDatabase db
 Objet de type QSqlDatabase permettant la connexion avec la base de données. Plus de détails...
 
QMutex mutex
 Objet de type QMutex permettant de protéger l'objet db, en autorisant son accès par un seul thread à la fois. Plus de détails...
 

Attributs privés statiques

static BaseDeDonneesbaseDeDonnees = nullptr
 Objet de type BaseDeDonnees accessible uniquement depuis une méthode static. Plus de détails...
 
static int nbAcces = 0
 Attribut de type int contenant le nombre d'accès en cours à la base de données. Plus de détails...
 
static QString typeBase = "QSQLITE"
 Attribut de type QString contenant le type de la base de données (MySQL, SQLite, ...) Plus de détails...
 

Description détaillée

Class permettant de s'interfacer avec la base de données.

Définition à la ligne 23 du fichier basededonnees.h.

Documentation des constructeurs et destructeur

◆ BaseDeDonnees()

BaseDeDonnees::BaseDeDonnees ( QString  type)
private

Constructeur de la classe BaseDeDonnees en privé afin de controller ses appels.

Paramètres
type

Définition à la ligne 15 du fichier basededonnees.cpp.

Références db, et typeBase.

Référencé par getInstance().

16 {
17  #ifdef DEBUG_BASEDEDONNEES
18  qDebug() << Q_FUNC_INFO << type;
19  #endif
20  db = QSqlDatabase::addDatabase(type);
21  typeBase = type;
22 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
static QString typeBase
Attribut de type QString contenant le type de la base de données (MySQL, SQLite, ...)
Definition: basededonnees.h:28

◆ ~BaseDeDonnees()

BaseDeDonnees::~BaseDeDonnees ( )
private

Destructeur de la classe BaseDeDonnees.

Définition à la ligne 24 du fichier basededonnees.cpp.

25 {
26  #ifdef DEBUG_BASEDEDONNEES
27  qDebug() << Q_FUNC_INFO;
28  #endif
29 }

Documentation des fonctions membres

◆ detruireInstance()

void BaseDeDonnees::detruireInstance ( )
static

Permet de detruire l'instance en cours, Static elle est accessible depuis n'importe où

Définition à la ligne 44 du fichier basededonnees.cpp.

Références baseDeDonnees, et nbAcces.

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

45 {
46  if(baseDeDonnees != nullptr)
47  {
48  if(nbAcces > 0)
49  nbAcces--;
50 
51  #ifdef DEBUG_BASEDEDONNEES
52  qDebug() << Q_FUNC_INFO << "nbAcces restants" << nbAcces;
53  #endif
54 
55  if(nbAcces == 0)
56  {
57  delete baseDeDonnees;
58  baseDeDonnees = nullptr;
59  }
60  }
61 }
static BaseDeDonnees * baseDeDonnees
Objet de type BaseDeDonnees accessible uniquement depuis une méthode static.
Definition: basededonnees.h:27
static int nbAcces
Attribut de type int contenant le nombre d&#39;accès en cours à la base de données.
Definition: basededonnees.h:29

◆ estOuvert()

bool BaseDeDonnees::estOuvert ( )

Permet de savoir si la base de données est ouverte ou non.

Renvoie
un booleen correspondant à l'état d'ouverture de la base de données

Définition à la ligne 98 du fichier basededonnees.cpp.

Références db, et mutex.

99 {
100  QMutexLocker verrou(&mutex);
101  return db.isOpen();
102 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ executer()

bool BaseDeDonnees::executer ( QString  requete)

Permet d'executer la requete passé en paramètre au format SQL.

Paramètres
requete
Renvoie
un booleen correspondant à l'état de retour de la requête

Définition à la ligne 104 du fichier basededonnees.cpp.

Références db, et mutex.

Référencé par IHMAccueil::ajouterPhotoBDD(), IHMAccueil::archiverCampagne(), IHMAccueil::enregisterMesureBDD(), IHMAccueil::enregistrerCampagneBDD(), IHMAccueil::modifierCampagneBDD(), et IHMAccueil::supprimerCampagne().

105 {
106  QMutexLocker verrou(&mutex);
107  QSqlQuery r;
108  bool retour;
109 
110  if(db.isOpen())
111  {
112  if(requete.contains("UPDATE") || requete.contains("INSERT") || requete.contains("DELETE"))
113  {
114  retour = r.exec(requete);
115  #ifdef DEBUG_BASEDEDONNEES
116  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
117  #endif
118  if(retour)
119  {
120  return true;
121  }
122  else
123  {
124  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
125  return false;
126  }
127  }
128  else
129  {
130  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
131  return false;
132  }
133  }
134  else
135  return false;
136 
137 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ getInstance()

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

Permet de créer une instance de BDD ou de récuperer celle deja en cours, cette méthode controle l'instanciation des objet BaseDeDonnees. Static elle est accessible depuis n'importe où

Paramètres
type
Renvoie
Instance de la BDD

Définition à la ligne 31 du fichier basededonnees.cpp.

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

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

32 {
33  if(baseDeDonnees == nullptr)
34  baseDeDonnees = new BaseDeDonnees(type);
35 
36  nbAcces++;
37  #ifdef DEBUG_BASEDEDONNEES
38  qDebug() << Q_FUNC_INFO << "nbAcces" << nbAcces;
39  #endif
40 
41  return baseDeDonnees;
42 }
static BaseDeDonnees * baseDeDonnees
Objet de type BaseDeDonnees accessible uniquement depuis une méthode static.
Definition: basededonnees.h:27
BaseDeDonnees(QString type)
Constructeur de la classe BaseDeDonnees en privé afin de controller ses appels.
static int nbAcces
Attribut de type int contenant le nombre d&#39;accès en cours à la base de données.
Definition: basededonnees.h:29

◆ ouvrir()

bool BaseDeDonnees::ouvrir ( QString  fichierBase)

Permet d'ouvrir le fichier de base de données passé en paramètre.

Paramètres
fichierBase
Renvoie
booleen définissant si l'accès BDD s'est réalisé correctement

Définition à la ligne 63 du fichier basededonnees.cpp.

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

Référencé par IHMAccueil::archiverCampagne(), IHMAccueil::chargerCampagnes(), IHMAccueil::enregisterMesureBDD(), IHMAccueil::enregistrerCampagneBDD(), IHMAccueil::ouvrirArchive(), IHMAccueil::ouvrirGraphiques(), IHMAccueil::rechercherCampagne(), et IHMAccueil::supprimerCampagne().

64 {
65  if(typeBase != "QSQLITE")
66  return false;
67  QMutexLocker verrou(&mutex);
68  if(!db.isOpen())
69  {
70  db.setDatabaseName(fichierBase);
71 
72  #ifdef DEBUG_BASEDEDONNEES
73  qDebug() << Q_FUNC_INFO << db.databaseName();
74  #endif
75 
76  if(db.open())
77  {
78 
79  #ifdef DEBUG_BASEDEDONNEES
80  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Ouverture réussie à %1").arg(db.databaseName());
81  #endif
82 
83  return true;
84  }
85  else
86  {
87  #ifdef DEBUG_BASEDEDONNEES
88  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : impossible d'ouvrir la base de données !");
89  #endif
90  QMessageBox::critical(nullptr, QString::fromUtf8("BaseDeDonnees"), QString::fromUtf8("Impossible d'ouvrir la base de données !"));
91  return false;
92  }
93  }
94  else
95  return true;
96 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
static QString typeBase
Attribut de type QString contenant le type de la base de données (MySQL, SQLite, ...)
Definition: basededonnees.h:28
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ recuperer() [1/4]

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

Permet d'executer la requete passé en paramètre au format SQL, et remplit le QString de sa réponse. Cette requête permet de récuperer un champs d'un enregistrement.

Paramètres
requete
donnees
Renvoie
un booleen correspondant à l'état de retour de la requête

Définition à la ligne 139 du fichier basededonnees.cpp.

Références db, et mutex.

Référencé par IHMAccueil::ajouterPhotoBDD(), IHMAccueil::creerCampagne(), IHMAccueil::enregistrerCampagneBDD(), IHMAccueil::modifierCampagneBDD(), IHMAccueil::ouvrirArchive(), IHMAccueil::ouvrirGraphiques(), IHMAccueil::rechercherCampagne(), IHMAccueil::recupererCampagneEnCours(), IHMAccueil::recupererIdCampagne(), IHMAccueil::recupererNbPhotos(), IHMAccueil::recupererPhotos(), et IHMAccueil::supprimerPhotoLocal().

140 {
141  QMutexLocker verrou(&mutex);
142  QSqlQuery r;
143  bool retour;
144 
145  if(db.isOpen())
146  {
147  if(requete.contains("SELECT"))
148  {
149  retour = r.exec(requete);
150  #ifdef DEBUG_BASEDEDONNEES
151  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
152  #endif
153  if(retour)
154  {
155  r.first();
156 
157  if(!r.isValid())
158  {
159  #ifdef DEBUG_BASEDEDONNEES
160  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
161  #endif
162  return false;
163  }
164 
165  if(r.isNull(0))
166  {
167  #ifdef DEBUG_BASEDEDONNEES
168  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Aucun résultat !");
169  #endif
170  return false;
171  }
172  donnees = r.value(0).toString();
173  #ifdef DEBUG_BASEDEDONNEES
174  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
175  #endif
176  return true;
177  }
178  else
179  {
180  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
181  return false;
182  }
183  }
184  else
185  {
186  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
187  return false;
188  }
189  }
190  else
191  return false;
192 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ recuperer() [2/4]

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

Permet d'executer la requete passé en paramètre au format SQL, et remplit le QStringListe de sa réponse. Cette requête permet de récuperer plusieurs champs d'un enregistrement.

Paramètres
requete
donnees
Renvoie
un booleen correspondant à l'état de retour de la requête

Définition à la ligne 194 du fichier basededonnees.cpp.

Références db, et mutex.

195 {
196  QMutexLocker verrou(&mutex);
197  QSqlQuery r;
198  bool retour;
199 
200  if(db.isOpen())
201  {
202  if(requete.contains("SELECT"))
203  {
204  retour = r.exec(requete);
205  #ifdef DEBUG_BASEDEDONNEES
206  qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QStringList)> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
207  #endif
208  if(retour)
209  {
210  r.first();
211 
212  if(!r.isValid())
213  {
214  #ifdef DEBUG_BASEDEDONNEES
215  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Résultat non valide !");
216  #endif
217  return false;
218  }
219 
220  for(int i=0;i<r.record().count();i++)
221  if(!r.isNull(i))
222  donnees << r.value(i).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
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ recuperer() [3/4]

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

Permet d'executer la requete passé en paramètre au format SQL, et remplit le QVector<QString> de sa réponse. Cette requête permet de récuperer un champs de plusieurs enregistrements.

Paramètres
requete
donnees
Renvoie
un booleen correspondant à l'état de retour de la requête

Définition à la ligne 244 du fichier basededonnees.cpp.

Références db, et mutex.

245 {
246  QMutexLocker verrou(&mutex);
247  QSqlQuery r;
248  bool retour;
249  QString data;
250 
251  if(db.isOpen())
252  {
253  if(requete.contains("SELECT"))
254  {
255  retour = r.exec(requete);
256  #ifdef DEBUG_BASEDEDONNEES
257  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
258  #endif
259  if(retour)
260  {
261  while ( r.next() )
262  {
263  data = r.value(0).toString();
264 
265  #ifdef DEBUG_BASEDEDONNEES
266  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
267  #endif
268 
269  donnees.push_back(data);
270  }
271  #ifdef DEBUG_BASEDEDONNEES
272  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
273  #endif
274  return true;
275  }
276  else
277  {
278  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
279  return false;
280  }
281  }
282  else
283  {
284  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
285  return false;
286  }
287  }
288  else
289  return false;
290 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

◆ recuperer() [4/4]

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

Permet d'executer la requete passé en paramètre au format SQL, et remplit le QVector<QStringList> de sa réponse. Cette requête permet de récuperer plusieurs champs de plusieurs enregistrements.

Paramètres
requete
donnees
Renvoie
un booleen correspondant à l'état de retour de la requête

Définition à la ligne 292 du fichier basededonnees.cpp.

Références db, et mutex.

293 {
294  QMutexLocker verrou(&mutex);
295  QSqlQuery r;
296  bool retour;
297  QStringList data;
298 
299  if(db.isOpen())
300  {
301  if(requete.contains("SELECT"))
302  {
303  retour = r.exec(requete);
304  #ifdef DEBUG_BASEDEDONNEES
305  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
306  #endif
307  if(retour)
308  {
309  while ( r.next() )
310  {
311  for(int i=0;i<r.record().count();i++)
312  data << r.value(i).toString();
313 
314  #ifdef DEBUG_BASEDEDONNEES
315  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << data;
316  for(int i=0;i<r.record().count();i++)
317  qDebug() << r.value(i).toString();
318  #endif
319 
320  donnees.push_back(data);
321 
322  data.clear();
323  }
324  #ifdef DEBUG_BASEDEDONNEES
325  qDebug() << Q_FUNC_INFO << "Enregistrement -> " << donnees;
326  #endif
327  return true;
328  }
329  else
330  {
331  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
332  return false;
333  }
334  }
335  else
336  {
337  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Erreur : requête %1 non autorisée !").arg(requete);
338  return false;
339  }
340  }
341  else
342  return false;
343 }
QSqlDatabase db
Objet de type QSqlDatabase permettant la connexion avec la base de données.
Definition: basededonnees.h:30
QMutex mutex
Objet de type QMutex permettant de protéger l&#39;objet db, en autorisant son accès par un seul thread à ...
Definition: basededonnees.h:31

Documentation des données membres

◆ baseDeDonnees

BaseDeDonnees * BaseDeDonnees::baseDeDonnees = nullptr
staticprivate

Objet de type BaseDeDonnees accessible uniquement depuis une méthode static.

Définition à la ligne 27 du fichier basededonnees.h.

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

◆ db

QSqlDatabase BaseDeDonnees::db
private

Objet de type QSqlDatabase permettant la connexion avec la base de données.

Définition à la ligne 30 du fichier basededonnees.h.

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

◆ mutex

QMutex BaseDeDonnees::mutex
private

Objet de type QMutex permettant de protéger l'objet db, en autorisant son accès par un seul thread à la fois.

Définition à la ligne 31 du fichier basededonnees.h.

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

◆ nbAcces

int BaseDeDonnees::nbAcces = 0
staticprivate

Attribut de type int contenant le nombre d'accès en cours à la base de données.

Définition à la ligne 29 du fichier basededonnees.h.

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

◆ typeBase

QString BaseDeDonnees::typeBase = "QSQLITE"
staticprivate

Attribut de type QString contenant le type de la base de données (MySQL, SQLite, ...)

Définition à la ligne 28 du fichier basededonnees.h.

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


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