#include "threadgestionbdd.h" #include ThreadGestionBDD::ThreadGestionBDD(QObject *parent) : QThread(parent) { index = 0; id_Client = 0; id_GRV = -1; id_Depot = -1; flagNewClientBase = false; // On crée un objet dédié à l'exploitation d'une BDD this->db = new QSqlDatabase(); if(!db->isValid()) { *db = QSqlDatabase::addDatabase("QSQLITE"); } // On indique à cet objet qu'il doit utiliser un driver SQLITE puisque c'est le format de notre BDD //*this->db = QSqlDatabase::addDatabase("QSQLITE"); // On indique le chemin pour accéder à notre BDD //db->setDatabaseName("C:/Users/xGeNeSiSx/Documents/GestionBDD/MaBase.sqlite"); db->setDatabaseName("/home/tessierj/Documents/IntegrationTest1/MaBase.sqlite"); //db->setDatabaseName("/home/tessierj/Documents/GestionBDD/MaBase.sqlite"); // qDebug() permet d'afficher des informations sur la console intégrée à Qt Creator // C'est très pratique pour le déboggage !! // ici, on s'assure que le driver SQLITE est bien chargé Q_EMIT EnvoieBaseErreur(db->driverName()); // On ouvre la BDD... if (!db->open()) { erreur = ("Erreur de connexion à la base de données") + this->db->lastError().text(); Q_EMIT EnvoieBaseErreur(erreur); } else { // ...et, si ça réussit, on crée un objet qui nous servira à faire des requêtes SQL query = new QSqlQuery(); // Attention : à instancier après l'ouverture de la BDD } // On affiche un message de bug pour vérifier que la BDD est bien ouverte erreur = this->db->databaseName() + " is open ? " + this->db->isOpen(); Q_EMIT EnvoieBaseErreur(erreur); } ThreadGestionBDD::~ThreadGestionBDD() { QString dbname = db->connectionName(); db->close(); delete db; QSqlDatabase::removeDatabase(dbname ); } void ThreadGestionBDD::run() { } void ThreadGestionBDD::ReceptionSelect_id_Client(QString requete, QString matricule) { sql = requete; matriculeClient = matricule; if(query->exec(requete)) { while(query->next()) { index++; id_Client = query->value(0).toInt(); } if(index == 0) { flagNewClientBase = true; } else { flagNewClientBase = false; } } else { erreur = "Probleme avec la requête Client"; } } void ThreadGestionBDD::ReceptionSelect_id_ClientNom_Prenom(QString requete, QString nom, QString prenom) { nomClient = nom; prenomClient = prenom; if(flagNewClientBase) { //faire la création du client //1. Recupérer la dernière occurence de l'id_Client (pour incrementer ce numéro) //2. Créer un nouveau client avec le nom , le prenom et le matricule. sql = "SELECT id_Client FROM Client ORDER BY id_Client DESC LIMIT 1"; if(query->exec(sql)) { query->next(); id_Client = query->value(0).toInt(); id_Client++; sql = "INSERT INTO Client (id_client, Nom, Prenom, Matricule)VALUES (\"" + QString::number(id_Client) + "\" , \"" + nomClient + "\" , \"" + prenomClient + "\" , \"" + matriculeClient + "\");"; if(query->exec(sql)) { } else { //PROBLEME } } } else { //voir si l'association de tout les paramètre est bien correct nomClient = nom; prenomClient = prenom; sql = requete; if(query->exec(sql)) { while(query->next()) { if(nomClient == query->value(1).toString()&& matriculeClient == query->value(3).toString() && prenomClient == query->value(2).toString()) { } else { //MARCHE PAS... } } } } } void ThreadGestionBDD::ReceptionInfosDepot(QString poids, QString codeBarre, QString snGrv, QString dateEnvoie) { //QApplication::processEvents(); Sn_GRV = snGrv; date = dateEnvoie; poidsDepot = poids; CodeBarre = codeBarre; //Recuperation de l'identifiant du GRV sql = "SELECT * FROM GRV WHERE SN_GRV = " + Sn_GRV +";"; if(query->exec(sql)) { if(query->next()) { id_GRV = query->value(0).toInt(); } else { sql = "SELECT id_GRV FROM GRV ORDER BY id_GRV DESC LIMIT 1"; if(query->exec(sql)) { query->next(); id_GRV = query->value(0).toInt(); id_GRV++; sql = "INSERT INTO GRV (id_GRV, poids, SN_GRV)VALUES (\"" + QString::number(id_GRV) + "\" , \"" + poidsDepot + "\" , \"" + Sn_GRV +"\");"; if(query->exec(sql)) { } else { //BUG } } } } else { // probleme de connexion à la BDD } sql = "SELECT id_Depot FROM Information_depot ORDER BY id_Depot DESC LIMIT 1"; if(query->exec(sql)) { query->next(); id_Depot = query->value(0).toInt(); id_Depot++; } sql = "INSERT INTO Information_depot (id_Depot, poids,GRV_id_GRV,Date,code_Barre)VALUES (\"" + QString::number(id_Depot) + "\" , \"" + poidsDepot + "\" , \"" + QString::number(id_GRV) + "\" , \"" + dateEnvoie + "\" , \"" + CodeBarre + "\");"; if(query->exec(sql)) { Q_EMIT EnvoieFinDepot(); } else { // Bug Insert } }