Chrono-Cross  1.1
BTS SN-IR La Salle Avignon 2018
Fonctions membres publiques | Fonctions membres publiques statiques | Fonctions membres privées | Attributs privés | Attributs privés statiques
Référence de la classe BaseDeDonnees

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

#include <basededonnees.h>

Graphe de collaboration de BaseDeDonnees:
Collaboration graph
[légende]

Liste de tous les membres

Fonctions membres publiques

QString getNomBaseDonnees () const
bool connecter (QString serveur=HOSTNAME, QString nomBase=DATABASENAME)
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)
QString getNomBaseDonnees () const
bool connecter (QString serveur=HOSTNAME, QString nomBase=DATABASENAME)
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)
QString getNomBaseDonnees () const
bool connecter (QString serveur=HOSTNAME, QString nomBase=DATABASENAME)
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 ()
static void detruireInstance ()
static BaseDeDonneesgetInstance ()
static void detruireInstance ()
static BaseDeDonneesgetInstance ()
static void detruireInstance ()

Fonctions membres privées

 BaseDeDonnees ()
 ~BaseDeDonnees ()
 BaseDeDonnees ()
 ~BaseDeDonnees ()
 BaseDeDonnees ()
 ~BaseDeDonnees ()

Attributs privés

QSqlDatabase db
QMutex mutex

Attributs privés statiques

static BaseDeDonneesbaseDeDonnees = NULL
static int nbAcces = 0

Description détaillée

Auteur:
Thierry VAIRA
Version:
1.0
Date:
Mercredi 30 mars 2018

Documentation des constructeurs et destructeur

Références db.

Référencé par getInstance().

{
    #ifdef DEBUG_BASEDEDONNEES
    qDebug() << "<BaseDeDonnees::BaseDeDonnees()>";
    #endif
    db = QSqlDatabase::addDatabase("QMYSQL");
}
{
    #ifdef DEBUG_BASEDEDONNEES
    qDebug() << "<BaseDeDonnees::~BaseDeDonnees()>";
    #endif
}

Documentation des fonctions membres

bool BaseDeDonnees::connecter ( QString  serveur = HOSTNAME,
QString  nomBase = DATABASENAME 
)
bool BaseDeDonnees::connecter ( QString  serveur = HOSTNAME,
QString  nomBase = DATABASENAME 
)

Références db, mutex, PASSWORD, et USERNAME.

Référencé par IHMManifestation::IHMManifestation(), IHMResultats::IHMResultats(), et ChronoCrossClassement::initialiserBD().

{
    QMutexLocker verrou(&mutex);
    if(!db.isOpen())
    {
       db.setHostName(serveur);
       db.setUserName(USERNAME);
       db.setPassword(PASSWORD);
       db.setDatabaseName(nomBase);

       #ifdef DEBUG_BASEDEDONNEES
       qDebug() << "HostName : " << db.hostName();
       qDebug() << "UserName : " << db.userName();
       qDebug() << "DatabaseName : " << db.databaseName();
       #endif
       if(db.open())
       {
           #ifdef DEBUG_BASEDEDONNEES
           qDebug() << QString::fromUtf8("<BaseDeDonnees::connecter()> connexion réussie à %1").arg(db.hostName());
           #endif

           return true;
       }
       else
       {
           qDebug() << QString::fromUtf8("<BaseDeDonnees::connecter()> erreur : impossible de se connecter à la base de données !");

           QMessageBox::critical(0, QString::fromUtf8("Chrono-Cross"), QString::fromUtf8("Impossible de se connecter à la base de données !"));

           return false;
       }
    }
    else
        return true;
}
bool BaseDeDonnees::connecter ( QString  serveur = HOSTNAME,
QString  nomBase = DATABASENAME 
)
static void BaseDeDonnees::detruireInstance ( ) [static]
static void BaseDeDonnees::detruireInstance ( ) [static]

Références baseDeDonnees, et nbAcces.

Référencé par ChronoCrossClassement::~ChronoCrossClassement(), IHMManifestation::~IHMManifestation(), et IHMResultats::~IHMResultats().

{
    // instance ?
    if(baseDeDonnees != NULL)
    {
        nbAcces--;
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << "<BaseDeDonnees::detruireInstance()> nbAcces restants = " << nbAcces;
        #endif
        // dernier ?
        if(nbAcces == 0)
            delete baseDeDonnees;
    }
}
bool BaseDeDonnees::executer ( QString  requete)
bool BaseDeDonnees::executer ( QString  requete)

Références db, et mutex.

Référencé par IHMManifestation::creerCoureur(), IHMManifestation::creerCourse(), IHMManifestation::creerManifestation(), ChronoCrossClassement::enregistrerResultat(), IHMManifestation::modifierCoureur(), IHMManifestation::modifierCourse(), IHMManifestation::modifierManifestation(), IHMManifestation::supprimerCoureur(), IHMManifestation::supprimerCourse(), et IHMManifestation::supprimerManifestation().

{
    QMutexLocker verrou(&mutex);
    QSqlQuery r;
    bool retour;

    if(db.isOpen())
    {
        retour = r.exec(requete);
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << QString::fromUtf8("<BaseDeDonnees::executer()> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
        #endif
        if(retour)
        {
            return true;
        }
        else
        {
            qDebug() << QString::fromUtf8("<BaseDeDonnees::executer()> erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);

            return false;
        }
    }
    else
        return false;

}
bool BaseDeDonnees::executer ( QString  requete)

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

Référencé par IHMManifestation::IHMManifestation(), IHMResultats::IHMResultats(), et ChronoCrossClassement::initialiserBD().

{
    if(baseDeDonnees == NULL)
        baseDeDonnees = new BaseDeDonnees();

    nbAcces++;
    #ifdef DEBUG_BASEDEDONNEES
    qDebug() << "<BaseDeDonnees::getInstance()> nbAcces = " << nbAcces;
    #endif

    return baseDeDonnees;
}

Références db.

Référencé par IHMManifestation::IHMManifestation(), et IHMResultats::IHMResultats().

{
    return db.databaseName();
}
bool BaseDeDonnees::recuperer ( QString  requete,
QString &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QStringList &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QString > &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QStringList > &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QString &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QString &  donnees 
)

Références db, et mutex.

Référencé par IHMResultats::afficherManifestation(), IHMResultats::afficherResultats(), IHMManifestation::afficherResultats(), ChronoCrossClassement::chargerInscritsCourse(), IHMManifestation::chargerListeCategories(), IHMManifestation::chargerListeClasses(), IHMManifestation::chargerListeCoureurs(), ChronoCrossClassement::chargerListeCourses(), IHMManifestation::chargerListeCourses(), IHMManifestation::chargerListeInscriptionCourses(), ChronoCrossClassement::chargerListeManifestation(), IHMManifestation::chargerListeManifestations(), IHMManifestation::getNumeroDossard(), et IHMResultats::recupererCourse().

{
    QMutexLocker verrou(&mutex);
    QSqlQuery r;
    bool retour;

    if(db.isOpen())
    {
        retour = r.exec(requete);
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QString)> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
        #endif
        if(retour)
        {
            // on se positionne sur l'enregistrement
            r.first();

            // on vérifie l'état de l'enregistrement retourné
            if(!r.isValid())
            {
                #ifdef DEBUG_BASEDEDONNEES
                qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QString)> résultat non valide !");
                #endif
                return false;
            }

            // on récupère sous forme de QString la valeur du champ
            if(r.isNull(0))
            {
                #ifdef DEBUG_BASEDEDONNEES
                qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QString)> résultat vide !");
                #endif
                return false;
            }
            donnees = r.value(0).toString();
            #ifdef DEBUG_BASEDEDONNEES
            qDebug() << "<BaseDeDonnees::recuperer(QString, QString)> enregistrement -> " << donnees;
            #endif
            return true;
        }
        else
        {
            qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QString)> erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);

            return false;
        }
    }
    else
        return false;
}
bool BaseDeDonnees::recuperer ( QString  requete,
QStringList &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QStringList &  donnees 
)

Références db, et mutex.

{
    QMutexLocker verrou(&mutex);
    QSqlQuery r;
    bool retour;

    if(db.isOpen())
    {
        retour = r.exec(requete);
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QStringList)> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
        #endif
        if(retour)
        {
            // on se positionne sur l'enregistrement
            r.first();

            // on vérifie l'état de l'enregistrement retourné
            if(!r.isValid())
            {
                #ifdef DEBUG_BASEDEDONNEES
                qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QStringList)> résultat non valide !");
                #endif
                return false;
            }

            // on récupère sous forme de QString la valeur de tous les champs sélectionnés
            // et on les stocke dans une liste de QString
            for(int i=0;i<r.record().count();i++)
                if(!r.isNull(i))
                    donnees << r.value(i).toString();
            #ifdef DEBUG_BASEDEDONNEES
            qDebug() << "<BaseDeDonnees::recuperer(QString, QStringList)> enregistrement -> " << donnees;
            #endif
            return true;
        }
        else
        {
            qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QStringList)> erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);
            return false;
        }
    }
    else
        return false;
}
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QString > &  donnees 
)

Références db, et mutex.

{
    QMutexLocker verrou(&mutex);
    QSqlQuery r;
    bool retour;
    QString data;

    if(db.isOpen())
    {
        retour = r.exec(requete);
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QVector<QString>)> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
        #endif
        if(retour)
        {
            // pour chaque enregistrement
            while ( r.next() )
            {
                // on récupère sous forme de QString la valeur du champs sélectionné
                data = r.value(0).toString();

                #ifdef DEBUG_BASEDEDONNEES
                //qDebug() << "<BaseDeDonnees::recuperer(QString, QVector<QString>)> enregistrement -> " << data;
                #endif

                // on stocke l'enregistrement dans le QVector
                donnees.push_back(data);
            }
            #ifdef DEBUG_BASEDEDONNEES
            qDebug() << "<BaseDeDonnees::recuperer(QString, QVector<QString>)> enregistrement -> " << donnees;
            #endif
            return true;
        }
        else
        {
            qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QVector<QString>)> erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);

            return false;
        }
    }
    else
        return false;
}
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QString > &  donnees 
)
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QStringList > &  donnees 
)

Références db, et mutex.

{
    QMutexLocker verrou(&mutex);
    QSqlQuery r;
    bool retour;
    QStringList data;

    if(db.isOpen())
    {
        retour = r.exec(requete);
        #ifdef DEBUG_BASEDEDONNEES
        qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QVector<QStringList>)> retour %1 pour la requete : %2").arg(QString::number(retour)).arg(requete);
        #endif
        if(retour)
        {
            // pour chaque enregistrement
            while ( r.next() )
            {
                // on récupère sous forme de QString la valeur de tous les champs sélectionnés
                // et on les stocke dans une liste de QString
                for(int i=0;i<r.record().count();i++)
                    data << r.value(i).toString();

                #ifdef DEBUG_BASEDEDONNEES
                //qDebug() << "<BaseDeDonnees::recuperer(QString, QVector<QStringList>)> enregistrement -> " << data;
                /*for(int i=0;i<r.record().count();i++)
                    qDebug() << r.value(i).toString();*/
                #endif

                // on stocke l'enregistrement dans le QVector
                donnees.push_back(data);

                // on efface la liste de QString pour le prochain enregistrement
                data.clear();
            }
            #ifdef DEBUG_BASEDEDONNEES
            qDebug() << "<BaseDeDonnees::recuperer(QString, QVector<QStringList>)> enregistrement -> " << donnees;
            #endif
            return true;
        }
        else
        {
            qDebug() << QString::fromUtf8("<BaseDeDonnees::recuperer(QString, QVector<QStringList>)> erreur : %1 pour la requête %2").arg(r.lastError().text()).arg(requete);

            return false;
        }
    }
    else
        return false;
}
bool BaseDeDonnees::recuperer ( QString  requete,
QVector< QStringList > &  donnees 
)

Documentation des données membres

static BaseDeDonnees * BaseDeDonnees::baseDeDonnees = NULL [static, private]

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

QSqlDatabase BaseDeDonnees::db [private]
QMutex BaseDeDonnees::mutex [private]

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

static int BaseDeDonnees::nbAcces = 0 [static, private]

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


La documentation de cette classe a été générée à partir des fichiers suivants :
 Tout Classes Fichiers Fonctions Variables Macros