| 12
 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
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 
 | //---------------------------------------------------------------------------
#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;
 
 // initialisation de mes pointeurs
 tab_nom_societe      = NULL;
 tab_nom_batiment     = NULL;
 tab_rue              = NULL;
 tab_ville            = NULL;
 tab_addr_mac_capteur = NULL;
 tab_date_heure       = NULL;
 tab_nom_table        = NULL;
 tab_nom_champs       = NULL;
 
 
}
//---------------------------------------------------------------------------
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); // test renvoie bien true test ok
}
//---------------------------------------------------------------------------
// assure la déconnexion au serveur de BD
void __fastcall MySQL_BDD::deconect_Serveur_BDD()
{
      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);
 
}
//---------------------------------------------------------------------------
void __fastcall MySQL_BDD::stockage_client(char *Nom_societe)
{
 
 char requete[80];
 
 // tableau dynamique qui stocke au fur et à mesure les données
 tab_nom_societe = (char *) malloc(strlen(Nom_societe));
 tab_nom_societe = Nom_societe;
 
 // 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) VALUES('%s')", tab_nom_societe);
    // requête insere nom Societer
    mysql_query(mysqlH, requete);
   // free(tab_nom_societe);
   }
}
//---------------------------------------------------------------------------
void __fastcall MySQL_BDD::stockage_batiment(char *Nom_batiments, char *nom_Rue, char *nom_Ville)
{
 char requete[80];
 
 // tableau dynamique qui stocke au fur et à mesure les données
 tab_nom_batiment = (char *) malloc(strlen(Nom_batiments));
 tab_nom_batiment = Nom_batiments;
 
 tab_rue = (char *) malloc(strlen(nom_Rue));
 tab_rue = nom_Rue;
 
 tab_ville = (char *) malloc(strlen(nom_Ville));
 tab_ville = nom_Ville;
 
  if(mysql_query(mysqlH, "SELECT * FROM 'batiments'"))
   {
    sprintf(requete, "INSERT INTO batiments(NomB, Rue, Ville) VALUES('%s', '%s', '%s')", tab_nom_batiment, tab_rue , tab_ville);
    // requêtes insere nom, rue et la ville
    mysql_query(mysqlH, requete);
    free(tab_nom_batiment);
    free(tab_rue);
    free(tab_ville);
   } 
}
//---------------------------------------------------------------------------
void __fastcall MySQL_BDD::stockage_capteur(char* aaddr_Mac_Capteur, int anumero_Capteur)
{
 char requete[80];
 
 // tableau dynamique qui stocke au fur et à mesure la date et l'heure
 tab_addr_mac_capteur = (char *) malloc(strlen(aaddr_Mac_Capteur));
 tab_addr_mac_capteur = aaddr_Mac_Capteur;
 
 numero_Capteur = anumero_Capteur;
 
 if(mysql_query(mysqlH, "SELECT * FROM 'capteurs'"))
  {
    sprintf(requete, "INSERT INTO capteurs(Mac, Numero) VALUES('%s', '%d')", tab_addr_mac_capteur, numero_Capteur);
    // requête insere l'adresse MAC du capteur et son numéro
    mysql_query(mysqlH, requete);
    free(tab_addr_mac_capteur);
  }
}
//---------------------------------------------------------------------------
// méthode : stockage température , date et heure
void __fastcall MySQL_BDD::stockage_datas(float Temperature, char *date_heure)
{
  char req[80];
 
  // tableau dynamique qui stocke au fur et à mesure la date et l'heure
  tab_date_heure = (char *) malloc(strlen(date_heure));
  tab_date_heure = date_heure;
 
  temperature = Temperature;
 
  if(mysql_query(mysqlH, "SELECT * FROM 'datas' "))
   {
     sprintf(req, "INSERT INTO datas(heureDate, temperature) VALUES('%s', '%2.2f')", tab_date_heure, temperature);
     // requête insere l'heure , la date et la température du capteur
     mysql_query(mysqlH, req);
//     free(tab_date_heure);
 
   }
}
//---------------------------------------------------------------------------
void __fastcall MySQL_BDD::effacer_datas()
{
  mysql_query(mysqlH, "DELETE FROM 'clients', 'batiments', 'capteurs', 'datas'");
}
//---------------------------------------------------------------------------
// rend information true  si la societe Nom_societer existe dans la BD  sinon false
bool __fastcall MySQL_BDD::recherche(char *nom_champs, char *nom_table)
{
 char requete[80], tab_search[100];
 MYSQL_RES *result = NULL;
 bool recherche;
 int ret;
 
 
 tab_nom_table = (char *) malloc(strlen(nom_table));
 tab_nom_table = nom_table;
 
 tab_nom_champs = (char *) malloc(strlen(nom_champs));
 tab_nom_champs = nom_champs;
 tab_nom_champs_copie = tab_nom_champs;
 
 Form1->Edit1->Text.c_str();
 strcpy(tab_search,Form1->Edit1->Text.c_str());
 
 sprintf(requete,"SELECT %s FROM %s WHERE %s = '%s'", tab_nom_champs, tab_nom_table , tab_nom_champs_copie, tab_search);
 
   // envoi requzete SQL
   ret = mysql_query(mysqlH, requete);
   if (ret == 0)  // si requete query valide
   {
 
    // recupération resultat de la derniere requete => stockage dans result
    result = mysql_store_result(mysqlH);
 
    if (mysql_fetch_row(result) != NULL)  // si resultat non null y a des champs a lire(there are rows)
      {
      // si resultat non null : parametre est dans BD
       recherche = true;
      }
    else
      {
       recherche = false;
      }
   }
 return (recherche);
}
//---------------------------------------------------------------------------
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() == true)
   {
    etat = 1;
     Memo1->Lines->Add("Connexion réussi");
      if(etat == 1)
        {
         obj->affichage_infos();
        }
       else
         {
          Memo2->Lines->Add("Erreur d'affichage....");
         }
    }
   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
      {
       Memo1->Lines->Add("Erreur de déconnexion");
      }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 static int mise_a_jour = 1;
 
        // test en cours 07/03/2013 V6
    if(etat == 1)
        {
         obj->stockage_client("Casino");  // test ok
         obj->stockage_batiment("Bat A","16 rue colin", "Marseille");   // test ok
         obj->stockage_capteur("13:00:00:04", 11513);     // test ok
         // 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
          // La méthode stockage_datas est lancer qu'une seule fois.....
           obj->stockage_datas(55.5,"2013-03-15");   // test ok
             etat = 2;
              sprintf(datas,"Mise à jour de la base de données N°%d.",mise_a_jour);
               mise_a_jour++;
                Memo1->Lines->Add(datas);
       }
     else if(etat == 2)
         {
          obj->stockage_datas(22.3,"2013-03-07");
         }
      else
         {
          Memo1->Lines->Add("Erreur de stockage des données");
         }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 obj->effacer_datas();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
 if(obj->recherche("Nom", "clients"))
   {
    Edit1->Text = "Le nom  est déjà dans la BD";
   }
  else
   {
    Edit1->Text = "Le nom est introuvable";
   }
}
//--------------------------------------------------------------------------- | 
Partager