IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Gros problème sur l'API de MySQL


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut Gros problème sur l'API de MySQL
    Bonjour a vous tous.

    Voulant utiliser l'api mysql, je me suis dit, pourquoi pas, seulement, lorsque je lance mon programme, il plante et je ne sais pas pourquoi^^

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <mysql.h>
     
    int main( int argc, char **argv)
    {
        MYSQL *mysql = NULL;
     
        mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "option");
        mysql_real_connect(mysql,"localhost","root","","joueur",3306,NULL,0);
     
        (void)argc;
        (void)argv;
     
        return 0;
    }
    Donc en gros, dès que je lance mon programme, au lieu de mettre process Returned 0, il me marque le programme a planter et doit s'arrêter.

    Merci de votre aide

    cordialement Qnope

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 448
    Par défaut
    Bonjour,

    « Mon programme plante » n'est pas une description suffisante, et tu commences à avoir suffisamment de messages à ton actif ici pour le savoir. Sous quel système d'exploitation travailles-tu et quels sont les symptômes de ton programme qui plante ? Une segfault ?

    Bon, a priori, ceci :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        MYSQL *mysql = NULL;
     
        mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "option");

    … ne peut pas fonctionner puisque tu passes le contenu du pointeur « mysql », donc NULL, à la fonction. Il manque un mysql_init() au préalable.

    En outre, ceci :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        (void)argc;
        (void)argv;

    … ne sert rigoureusement à rien.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut
    Salut.

    Merci de ta réponse, lorsque le programme "plante", voici ce que me dit le compiltateur :

    process Returned -1073741819 ( 0xC0000005)

    Sinon tu dis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (void)argc
    (void)argv
    Ne sert a rien, il permet juste d'eviter d'avoir des warnings^^.

    Sinon, j'ai rajouter le MySql Init.

    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
    #include <stdio.h>
    #include <conio.h>
    #include <winsock.h>
    #include <mysql.h>
     
    int main()
    {
        MYSQL mysql;
            mysql_init(&mysql);
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
            if(mysql_real_connect(&mysql,"127.0.0.1","root","","mysql",0,NULL,0))
                {
                    printf("la connection est reussis");
     
                    mysql_close(&mysql);
                }
            else
                {
                    printf("Une erreur s est produite lors de la connexion à la BDD!");
                }
     
            printf("Appuyer sur entrer for quit");
     
            while(getchar() != '\n');
     
            getchar();
     
      return 0;
    }
    Mais j'ai toujours ce bug



    Il m'affiche la connection a réussis, puis appuyer sur entrer for quit, mais dès que je clique sur entrer. Bim, ca plante.

    PS/J'utilise Windows Seven.

    Cordialement Qnope merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 448
    Par défaut
    Bonjour,

    0XC0000005 correspond à « Access Violation », donc à une segfault, donc à un pointeur mal initialisé (pour simplifier). Au départ, tu n'avais pas du tout initialisé le pointeur « mysql » d'où le plantage et, cette fois, tu ne l'initialises pas correctement car la fonction mysql_init() ne s'utilise pas de cette façon.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 209
    Par défaut
    Salut, je ne sais pas si j'utilise très correctement MySQL_Init, mais j'ai résolu mon problème en changeant la DLL, pourquoi je ne sais pas.

    Merci tout de même de ton aide.

    Voilà le code au cas où

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <mysql.h>
     
    int main()
    {
        MYSQL mysql;
            mysql_init(&mysql);
            mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
            if(mysql_real_connect(&mysql,"127.0.0.1","root","","mysql",0,NULL,0))
                {
                    printf("la connection est reussis\n");
     
                    mysql_close(&mysql);
                }
            else
                {
                    printf("Une erreur s est produite lors de la connexion à la BDD!");
                }
     
            printf("Appuyer sur entrer for quit");
            getchar();
     
      return 0;
    }
    .

    Il m'affiche bien returned 0 a la fin ^^

    Je pense a bientôt

    En fait tu avais raison, j'ai utiliser comme il faut le mysql init avec l'ancienne DLL et ça a fonctionner Merci beaucoup

    Cordialement Qnope

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Gros problème sur les boucles avec les checkbox
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2010, 14h31
  2. Gros problème sur mon pc
    Par cat2275 dans le forum Sécurité
    Réponses: 9
    Dernier message: 11/12/2009, 09h38
  3. gros problème sur lancement rpm JACORB
    Par Elodie31 dans le forum CORBA
    Réponses: 1
    Dernier message: 07/06/2007, 11h33
  4. Probléme sur las API MySql - fonction manquante
    Par boopix dans le forum C++Builder
    Réponses: 1
    Dernier message: 15/04/2007, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo