begin process at 2012 05 30 08:24:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Base de données

 > 

SQL

 > 

URGENT : pb de conexion avec mysql_real_connect


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

URGENT : pb de conexion avec mysql_real_connect

dimanche 18 mars 2007 à 10:42:07 | URGENT : pb de conexion avec mysql_real_connect

Stephworlds

salut a tous
C'est éxtrémement urgent.
Je doit me connecter sur une base de donées distante. Mon programme compile. Mais lorsque je lance l'appli la connexion ne se fait pas... J'essaye de me connecter à une base de données free.
Voici le code

#include <stdio.h>
#include <mysql.h>
#include <stdarg.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

#if defined _DEBUG //pour passer en mode debug, aller dans Générer/Gestionnaire de configuration
    #define DBGPRINTF ::printf
    #include <stdio.h>
#else
    #define DBGPRINTF ::dbgprintf
    inline int dbgprintf( const char* strFormat, ... );
    inline int dbgprintf( const char* strFormat, ... ){
        return(0);
    }
#endif
#define MYSQL_HOST "sql.free.fr" //mettre l'adresse de ton serveur sur internet
#define MYSQL_DB "********"
#define MYSQL_LOGIN "********"
#define MYSQL_PASSWD "*******"



void main (void)
{ // déclaration pour la lecture ecriture création des fichier textes
    FILE *fileUser; //pour le fichier user.txt
    FILE *fileCles; //pour le fichier cles.txt
    FILE *fileLien; //pour le fichier inuse.txt
    FILE *filePerdu; //pour le fichier lost.txt
    FILE *fileHistorique;    //pour le fichier historique.txt

    char cUser[]="user.txt";
    char cCles[]="keys.txt";
    char cLien[]="inuse.txt";
    char cPerdu[]="lost.txt";
    char cHistorique[]="historique.txt";

    char *cNumCles[17]; //les clés iButtons possedent un code de 16 caractères
    char *cNumUser[50];
    char cDateHeure[19];
    char cNumBadge[16];
    char tab[256][256];

    int index;
    int test;

    errno_t erruser; //confirmation de l'ouvertures du fichier user.txt
    errno_t errkeys; //confirmation de l'ouvertures du fichier keys.txt
    errno_t errinuse; //confirmation de l'ouvertures du fichier inuse.txt
    errno_t errlost; //confirmation de l'ouvertures du fichier lost.txt
    errno_t errhistorique; //confirmation de l'ouvertures du fichier historique.txt
   

 // déclaration des variables nécessaire à la bdd
    MYSQL *sql;    //gestionnaire de connexion
    MYSQL *mysql; //gestionnaire d'initialisation
    MYSQL_RES *myRES;
    MYSQL_ROW myROW;

    int iResult;
   
//récupération de l'horloge
    int HeureDebut;
    int HeureFin;
    time_t timer1;
    time(&timer1);
    int secondes, minutes, heures, horaires;
    char* cHeureDebut[6];
    char* cHeureFin[6];
    struct tm *newTime1;

    newTime1 = localtime(&timer1);
    heures = newTime1->tm_hour; // Les heures sont dans "heures"
    minutes = newTime1->tm_min; // Les minutes sont dans "minutes"
    secondes = newTime1->tm_sec; // Les secondes sont dans "secondes"
    horaires=60*heures+minutes;

//-----Mise en place du lien avec la base sql------------------------------------------------------------
       
    mysql=mysql_init(0); //la fonction mysql_init appelle mysql_library_init quand il n'y a pas de multi thread.
    if(mysql!=0){
        dbgprintf("librairies initialisees\n");
        dbgprintf("objet alloue\n");
        sql=mysql_real_connect(mysql,MYSQL_HOST,MYSQL_LOGIN,MYSQL_PASSWD,MYSQL_DB,21,0,0); // connexion a notre base
        if(sql!=0){
            dbgprintf("base connecté\n");
       
//-----Première partie : utilisation de la base projet et de la table numero_des_cles---------------------

            erruser = fopen_s(&fileUser, cUser, "w");
            errkeys = fopen_s(&fileCles, cCles, "w");            /* on ouvre un fichier en  write ce qui provoque la création de celui ci */
            errinuse = fopen_s(&fileLien, cLien, "w");
            errlost = fopen_s(&filePerdu, cPerdu, "w");
            if(erruser==0 && errkeys==0 && errinuse==0 && errlost==0){
                dbgprintf("les fichier sont crées");
               
                //requette pour recuperer l'heure des acces de la base
                //mysql_query(sql, "SELECT HeureDebut ,HeureFin FROM type_acces WHERE TypeAcces = 'Etudiant'");
                //myRES = mysql_store_result(sql);
                //    myROW = mysql_fetch_row(myRES);
                //for(unsigned int i = 0; i < myRES->row_count /*nombre de lignes dans la structure du resultat*/; i++) {
                //    myROW = mysql_fetch_row(myRES); //Récupère la ligne suivante d'un jeu de résultats
                //    cHeureDebut[i]= myROW[1]; //l'heure de début est dans la 1ere colonne
                //    cHeureFin[i]= myROW[2];//le numéro de fin est dans la 1ere colonne
                //}
                //mysql_free_result(myRES);
               
                // execution d'une simple requête pour récuperer l'ensemble des bases de données     
                //if( =1){ //selon l'heure on envoie soit la totalité soit les admins
                    iResult=mysql_query(sql, "SELECT NumBadge ,NumUtisateur FROM numero_des_cles WHERE TypeAcces = 'Admin' AND TypeAcces = 'Etudiant'");  
                //}
                //else{
                //    iResult=mysql_query(mysqlconnexion, "SELECT NumBadge ,NumUtisateur FROM numero_des_cles WHERE TypeAcces = 'Admin'");
                //}
                       
                myRES = mysql_store_result(sql); //initialisation du jeu de résultats et l'enregistre dans le client
                if (myRES!=NULL) { //parcours de l'ensemble des lignes du resultat myRES    
                    for(unsigned int i = 0; i < myRES->row_count /*nombre de lignes dans la structure du resultat*/; i++) {
                        myROW = mysql_fetch_row(myRES); //Récupère la ligne suivante d'un jeu de résultats
                        cNumCles[i]= myROW[1]; //le numéro des clé est dans la 1ere colonne
                        cNumUser[i]= myROW[2]; //le numéro utilisateur est dans la 2eme colonne
                        fprintf(fileUser, "%s\n", cNumUser[i]);  // écriture des données des utilisateurs dans le fichier user.txt
                        fprintf(fileCles, "%s\n", cNumCles[i]);  // écriture des données des clés dans le fichier dans le fichier keys.txt
                        fprintf(fileLien, "%s ", cNumCles[i]);   // écriture des données des clés suivit d'un éspace dans le fichier des liens
                        fprintf(fileLien, "%s\n", cNumUser[i]);  // écriture des données des utilisateurs suivit d'un retour ligne dans le fichier des liens
                    }
                }
                mysql_free_result(myRES); //Libèration de la mémoire allouée au résultat myRES
            //on referme les fichiers
                fclose(fileUser);
                fclose(fileCles);
                fclose(fileLien);
                fclose(filePerdu);
            }   
//-----Deuxième partie :  Lire et rentrer dans la bdd le contenu du fichier historique--------------------

            errhistorique = fopen_s(&fileHistorique, cHistorique, "r");  // read
            if(errhistorique == 0){    // on vérifie que l'ouverture s'est bien passé
                for (index = 0; !feof(fileHistorique); ++index) { //pour chaque ligne du fichier chistorique
                    fgets(tab[index], 255, fileHistorique); //on récupere les valeur dans le tableau tab
                    test=0;                              
                    do{      //on fait un boucle pour supprimer les retours lignes
                        if(tab[index][test]=='\n'){
                            tab[index][test]='\0';
                            test=0;
                        }
                        test++;
                    }while(test=0);
                }
                test=index;

                //on sait ce qu'on va recevoir donc a partir de ça on cherche dans le char

                for (index = 0; index<test ; ++index) { // On écrit dans la base
                    iResult=mysql_query(sql, "INSERT INTO `historique` ( `NumAcces` , `DateHeureAcces` , `NumBadge` ) VALUES ( '', cDateHeure[index], cNumBadge[index])");
                }
            }
            fclose(fileHistorique);
        }
        else{
            dbgprintf("connexion echouee\n");
        }
    }

//-----Troisième partie : Créer un fichier vide pour l'historique-----------------------------------------

    errhistorique = fopen_s(&fileHistorique, cHistorique, "w"); //on ouvre un fichier en  write ce qui provoque la création de celui ci
    if(errhistorique == 0){
        dbgprintf("le fichier de l'historique vide est cree\n");
        fclose(fileHistorique);//on referme le fichier pour qu'il puisse être envoyé par le serveur ftp
    }
    else{
        dbgprintf("le fichier de l'historique vide n'est pas crée\n");
    }
    mysql_close(mysql);
}

c'est très important vu que ça fait parti de mon projet de fin d'étude.....
Merci de vos réponses

dimanche 18 mars 2007 à 15:20:26 | Re : URGENT : pb de conexion avec mysql_real_connect

24Karas

Réponse acceptée !
Si je me souviens bien, free interdit les connexions externes donc pas moyen de se connecter avec un programme ...

Il doit quand meme y avoir moyen de recup un code erreur de la connexion qui échoue et de checker sur le site mysql à quoi correspond ce code d'erreur :
	if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}

`CR_CONN_HOST_ERROR'
Failed to connect to the *MySQL* server.

`CR_CONNECTION_ERROR'
Failed to connect to the local *MySQL* server.

`CR_IPSOCK_ERROR'
Failed to create an IP socket.

`CR_OUT_OF_MEMORY'
Out of memory.

`CR_SOCKET_CREATE_ERROR'
Failed to create a Unix socket.

`CR_UNKNOWN_HOST'
Failed to find the IP address for the hostname.

`CR_VERSION_ERROR'
A protocol mismatch resulted from attempting to connect to a
server with a client library that uses a different protocol
version. This can happen if you use a very old client library to
connect to a new server that wasn't started with the
`--old-protocol' option.

`CR_NAMEDPIPEOPEN_ERROR'
Failed to create a named pipe on Windows.

`CR_NAMEDPIPEWAIT_ERROR'
Failed to wait for a named pipe on Windows.

`CR_NAMEDPIPESETSTATE_ERROR'
Failed to get a pipe handler on Windows.

`CR_SERVER_LOST'
If `connect_timeout' > 0 and it took longer then `connect_timeout'
seconds to connect to the server or if the server died while
executing the `init-command'.
++
dimanche 18 mars 2007 à 15:23:22 | Re : URGENT : pb de conexion avec mysql_real_connect

24Karas

Réponse acceptée !
Tu peux toujours installer un serveur mysql  local (tu t'installes easyphp rapido) et tu tentes ton programme sur localhost; Si ça marche chez toi c'est soit que ça vient de chez free, soit ton firewall qui bloque ... Mais je doute quand meme que free autorise des accès externes à leurs bases .. à voir ;-)

++
dimanche 18 mars 2007 à 21:57:33 | Re : URGENT : pb de conexion avec mysql_real_connect

Stephworlds

Merci 24Karas tu me sauve la vie maintenant ça marche nikel. Donc free ne veut pas qu'on se connecte a sa base. Avec easyphp c'est bon. Les seules modifs sont localhost et root en login.


Cette discussion est classée dans : fichier, mysql, txt, char, dbgprintf


Répondre à ce message

Sujets en rapport avec ce message

prog en C, ecriture puis lecture de donnees de donnees dans un fichier fichier txt [ par 01472583690 ] Salut a tous ! voici mon probleme : Dans mon programme l'utilisateur doit entrer des donnees ( des char (nom, ville .....) , ainsi que des int ( age, Besoin d'une astuce :) [ par lamoueste ] Alors voila j'ai un probleme, je dois ouvrir un fichier binaire et le mettre en format txt : pour cela je dois convertir les octets tirés du fichier b help :Lire un fichier en C [ par nono1664 ] Bonjour, je suis actuellement étudiant en BTS IRIS 1er anné et j'ai un tp à réaliser qui à pour but de gerer une bibliotequeJe souhaiterai donc savoir manipulation LPCWSTR et char[] [ par ebooserge ] salut a tous,je suis en train de realiser un petit prog avec directshow et j'ai quelques diffcultées.je dois utiliser une fonction qui prend en parama syntaxe et fichier [ par silverfr78021959 ] bonjour,Voilà j'ai un petit soucis, je désires affectuer une syntaxe ùais cela ne marche pas et je vois pas pkoi.par expl : fonct.fonction("fichier.tx conversion SCtring et char et vice vers ca [ par philo71 ] je voudrais convertir une CString en char et vice vers ça ! J’ai lu plusieurs Fac mais elle ne traite pas ce type de conversion! Quelqu'un aurais t'il le contenue d'une TlistBox dans un fichier txt [ par hamidkhelifa ] hello!!! voila g un petit probleme que je n'arrive pas a comprendre je susi entraint de faire une aplication ou je suis obliger de charger un fichier comment traiter un fichier.txt avec le visual c++ [ par dream1983 ] salut,je demande une application qui fait l'ajout,la suppression,la mise a jour et la consultation d'un fichier avec le c++ allouer de la mémoire pile. [ par deck_bsd ] Bonjour, Voila j'ai un problème , j'ai fait une partie de programme qui est chargé d'allouer juste assez de mémoire a un pointeur  de type char pou Lecture de fichier TXT [ par beb30 ] Voila je souhaite faire un programme en C qui me permette de retrouver une information de type Char rentrée manuellement. Je souhaite aller lire ds un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,264 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales