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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    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)

  3. #3
    Membre confirmé
    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
    Par défaut
    Merci pour ces précisions, j'esserai celà Lundi,


    Bon week-end

  4. #4
    Membre confirmé
    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
    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