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");
}
}
//--------------------------------------------------------------------------- |
Partager