Bonjour tous le monde

Je suis étudiant et dans le cadre d'un projet je dois crée une classe qui permet de se connecter au serveur, à une base de données et à y stocker des données.

J'ai réussi cependant j'ai un souci en ce qui concerne les jointures, j'ai plusieurs tables que je dois relier mais je sais pas pourquoi mes jointures semblent ne pas fonctionner pouvais vous observer mon code et me dire d’où vient le souci.

Je fais des test en ce moment pour voir donc n'hésiter pas à m'aider.

Cordialement Tizi

Mon code c++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
//---------------------------------------------------------------------------
#include <vcl.h>
#include <mysql.h>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <string.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Constructeur avec paramètres
__fastcall MySQL_BDD::MySQL_BDD( char* host, char * user, char* passwd, char* db, int port, char* socket, int drapeau)
{
 
 // initialisation de MYSQL (OBLIGATOIRE)
 mysqlH = NULL;
 // allocation objet mysqlH
 mysqlH = mysql_init(mysqlH);
 
 this->host = host;
 this->user = user;
 this->passwd = passwd;
 this->db = db;
 this->port = port;
 this->socket = socket;
 this->drapeau = drapeau;
 
}
//---------------------------------------------------------------------------
bool __fastcall MySQL_BDD::conect_Serveur_BDD()
{
  // connexion au serveur + Base de données
 if(mysql_real_connect(mysqlH, host, user, passwd, db, port, socket, drapeau))
    {
    test = true;
    }
 else
   {
    test = false;
   }
 
 return test;
}
//---------------------------------------------------------------------------
// assure la déconnexion au serveur de BD
void __fastcall MySQL_BDD::deconect_Serveur_BDD()
{
 // Appel de la méthode mysql_close pour se déconnecter
  mysql_close(mysqlH);
 // remet le pointeur à NULL
  mysqlH = NULL;
 
}
//---------------------------------------------------------------------------
// méthode d'affichage classique à modifié plus tard
void __fastcall MySQL_BDD::affichage_infos()
{
   sprintf(info,"Serveur : %s , Base de données : %s ",host, db);
   Form1->Memo2->Lines->Add(info);
 
}
//---------------------------------------------------------------------------
// méthode test faisabilité ---> Ok
/*
int __fastcall MySQL_BDD::envoie_donnee()
{
 int ret = 0;
 if(mysql_query(mysqlH ,"INSERT INTO clients(Nom, Prenom) VALUES('Khayes', 'Marco')"))
  {
   ret = 1; // 1 pour ok
  }
  else
  {
   ret = -1;
  }
 
  return ret;
}
*/
//---------------------------------------------------------------------------
// Méthode que Fabbri doit utiliser pour stocker les différentes données dans les champs des tables
void __fastcall MySQL_BDD::stockage_datas(char *Nom_clients, char *Prenom_clients, char *Nom_batiments, char *nom_Rue, char *nom_Ville, char* aaddr_Mac_Capteur, int anumero_Capteur, float Temperature, char *date_heure)
{
 
 char requete[80]={0};
 // variables qui serviront à stocker les données dans les tables adéquats
 this->nom_Clients = Nom_clients;
 this->prenom_Clients = Prenom_clients;
 this->nom_Batiments = Nom_batiments;
 this->nom_rue = nom_Rue;
 this->ville = nom_Ville;
 this->addr_Mac_Capteur = aaddr_Mac_Capteur;
 this->numero_Capteur = anumero_Capteur;
 this->temperature = Temperature;
 this->heure_date = date_heure;
 
 // JOINTURES: Les jointures permettent d'exploiter pleinement le modèle relationnel des tables d'une base de données (mes tables : batiments, clients, capteurs, datas)
 // * pour sélectionnner tous les champs + jointure entre clés Primaires et clés étrangères
 
 if(mysql_query(mysqlH, "SELECT * FROM 'batiments', 'clients', 'capteurs', 'datas' WHERE batiments.idSocieteE = clients.idSociete AND capteurs.idBatimentE = batiments.idBatiment AND datas.idCapteurE = capteurs.idCapteur"))
   {
    sprintf(requete,"INSERT INTO clients(Nom, Prenom) VALUES('%s', '%s')", nom_Clients, prenom_Clients);
    mysql_query(mysqlH, requete);
 
    sprintf(requete,"INSERT INTO batiments(NomB, Rue, Ville) VALUES('%s', '%s', '%s')", nom_Batiments, nom_rue, ville);
    mysql_query(mysqlH, requete);
 
    sprintf(requete,"INSERT INTO capteurs(Mac, Numero) VALUES('%s', '%d')", addr_Mac_Capteur, numero_Capteur);
    mysql_query(mysqlH, requete);
 
    sprintf(requete,"INSERT INTO datas(heureDate, temperature) VALUES('%s', '%2.2f')", heure_date, temperature);
    mysql_query(mysqlH, requete);
   }
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // Allocation dynamique d'un objet de classe MYSQL
 obj = new MySQL_BDD("192.168.2.82", "ECOVIA", "ecovia", "ecovia", 0, NULL, 0);
 
 // Appel méthode via l'objet : obj
 if(obj->conect_Serveur_BDD())
   {
    Memo1->Lines->Add("Connexion réussi");
    etat = 1;
     if(etat == 1)
       {
        obj->affichage_infos();
       }
      else
       {
       Memo2->Lines->Add("Erreur d'affichage: Aucune connexion au Serveur....");
      }
   }
  else
    {
    Memo1->Lines->Add("Erreur connexion au Serveur et à la BDD");
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  if(etat == 1)  // variable etat joue le rôle de drapeau
   {
    // Appel méthode
    obj->deconect_Serveur_BDD();
    Memo1->Lines->Add("Déconnexion réussi");
    etat = 0;
    // Delete mon objet
    delete(obj);
   }
  else
   {
    Form1->Memo1->Lines->Add("Erreur de déconnexion");
   }
}
 
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 static int mise_a_jour = 1;
 
 // test en cours 08/03/2013 V4
 if(etat == 1)
   {
    // Appel de la méthode avec les paramètres : important format à respecter pour la date année-mois-jour et l'heure HH:MM:SS 
    obj->stockage_datas("Khayes", "Marco", "Batiment a", "Rue olive", "Marseille", "00:00:00:00", 11513, 22.33, "2013-01-02 12:12:12");
    sprintf(datas,"Mise à jour de la base de données N°%d.",mise_a_jour);
    Memo1->Lines->Add(datas);
    mise_a_jour++;
   }
 else
   {
    Memo1->Lines->Add("Erreur de stockage des données");
   }
}
//---------------------------------------------------------------------------