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 :

API MySQL Plante


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut API MySQL Plante
    Bonjour, je dois utiliser l'API de mysql pour pouvoir communiquer avec ma base, cependant le programme plante quand la fonction mysql_store_result est appelée. (fonction?!)

    Quelqu'un saurait pourquoi? merci
    voilà le code en question.
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <mysql/mysql.h>
     
    int main(void){
     
        MYSQL mysql;
        mysql_init(&mysql);
        mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
     
        if(mysql_real_connect(&mysql,"localhost","root","root","test",0,NULL,0)){
            mysql_query(&mysql, "SELECT * FROM test");
     
     
     
            MYSQL_RES *result = NULL;
            MYSQL_ROW row;
            unsigned int i = 0;
            unsigned int num_champs = 0;
     
            result = mysql_store_result(&mysql);
            num_champs = mysql_num_fields(result);
    		system("pause");
            while ((row = mysql_fetch_row(result))){
                unsigned long *lengths;
                lengths = mysql_fetch_lengths(result);
     
                for(i = 0; i < num_champs; i++){
                    printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
                }
                printf("\n");
            }
    			system("pause");	
            mysql_free_result(result);
            mysql_close(&mysql);
        } else{
            printf("stop");
        }
        return 0;
    }

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    à tout hasard, tu n'as pas vérifié que la requête à réussit, en vérifiant le code de retour de mysql-query.

    Par ailleurs, tu as vérifié que le serveur sql est démarré, que la base existe, et qu'elle contient ce que tu veux?

    Autre chose.
    select * ne sert que pour de l'affichage direct.
    En temps normal, tu ne sélectionnes que les colonnes que tu veux.
    Tu y gagneras en performance car il y aura moins de données à faire transiter en mémoire et sur le réseau.
    Et surtout ton programme n'aura pas à être modifié quand le schéma changera (sauf cas extrême)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut
    Merci pour ces précisions, j'esserai celà Lundi,


    Bon week-end

  4. #4
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    je viens de tester la requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(mysql_query(&mysql, "SELECT id FROM test;"))
        printf("test ok");
    et sa s'affiche bien, donc la connexion a la BDD est ok et la requête aussi.

    Cependant, sa bloque toujours lors du mysql_store_result. j'ai beau chercher, je ne trouve pas

    Lorsque je test le résultat de mysql_store_result, il plante

    edit: Erreur de pointeur, merci quand même
    bonne journée

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

Discussions similaires

  1. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19
  2. [MFC] [API mySQL] Sous requêtes
    Par Guybrush113 dans le forum MFC
    Réponses: 5
    Dernier message: 29/04/2004, 16h14
  3. API MySQL - Connexion réseau
    Par klael dans le forum Bases de données
    Réponses: 3
    Dernier message: 18/03/2004, 09h25
  4. Utilisation des API MySQL // ADO ou BDE ? (sujet 2)
    Par rohstev dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/11/2003, 10h50
  5. [DevC++]Installation de l'API MySQL
    Par Nasky dans le forum Dev-C++
    Réponses: 22
    Dernier message: 24/07/2003, 22h40

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