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++Builder Discussion :

Lire dans une base de données toutes les lignes [Base de donnée]


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Lire dans une base de données toutes les lignes
    Bonjour à tous, j'aimerai un peu d'aide pour finir un projet. je souhaiterai faire en sorte que mon application sous c++ builder puisse lire et me retranscrire toutes les lignes d'une base de données en effet lorsque j'effectue une requete mysql pour lire les tables, celui ci me lit bien celle dont les chiffres partes de 1. (mon test est: 1, 2, 3, 21) et il ne lis que 1, 2, 3.

    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
     
     
    mysql_query(connection,"SELECT Porte FROM e_s");
    resultats = mysql_store_result(connection);
    if (resultats == NULL)
    {
     TMemtest->Lines->Add("Aucun résultats.");
    }
    else
    {
    nb_ligne = mysql_num_rows(resultats);
    for (ni=0; ni<nb_ligne; ni++)
    {
    ligne = mysql_fetch_row(resultats);
     
    //organisation sur plusieurs lignes [...]
    //declaration de mes objets "dynamique"
     
    }
    mysql_free_result(resultats);
    }
    }

  2. #2
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Avant toute chose, quelques remarques concernant ton problème et ta façon de le formuler :
    1 - Tu n'utilises pas "une base de données", mais MySQL à laquelle tu accèdes via son API C : essaye d'être précis quand tu le peux.
    2 - Fournir les données d'une table (ou un extrait) peut aussi aider.
    3 - Merci de mieux formuler ton problème, car en l'état je ne vois pas vraiment qui pourrait t'aider ...
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    tu peux aussi boucler tant que mysql_fetch_row renvoie un pointeur différent de NULL
    C'est comme cela que je l'ai fait en Delphi, mysql_num_rows et mysql_num_fields, m'ont servi à allouer la mémoire de mes TList imbriquées

    As-tu essayé d'ajouter une valeur dans la DB, une 5eme comme 22 !
    Si cela reste 1, 2 et 3 (nb_ligne = 3), tu un étrange problème, une limite de mémoire ? dans my.ini ? un index corrompu peut provoquer cela aussi !
    Si cela passe à 1, 2, 3 et 21 (nb_ligne = 5), c'est tout simplement un problème de boucle

    J'utilisais mysql_real_query et non mysql_query pour gérer les BLOBs

    Pour parcourir les colonnes tu utilises bien mysql_field_seek et mysql_fetch_field ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci de me répondre aussi vite. Ma base de données contient 5 tables (je ne m'en sert que de deux dans le projet le reste sert a mes camarades) Mon problème est le suivant: Comment faire en sorte que C++ Builder puisse lire toutes les tables d'une base de données via mySQL même si celles-ci comportent des sauts de numéros?




    (donc e_s et historique sont les deux tables que j'utilise)

    Je ne savais pas que ces fonctions existaient et je vais les tester.
    (nous "programmons" plus en C++ en cours et touchons rarement a d'autres choses).
    J'utilisais ceci pour afficher mes fenêtres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nb_ligne=mysql_num_rows(resultats);
    for (ni=0; ni<nb_lignes; ni++)
    {
    ligne=mysql_fetch_row(resultats);
    //affichage des objets graphiques;
    }

  5. #5
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par Miharu Voir le message
    Comment faire en sorte que C++ Builder puisse lire toutes les tables d'une base de données via mySQL même si celles-ci comportent des sauts de numéros?
    Que veux-tu dire par saut de numéros, est-ce que tu veux dire que l'ID de ton enregistrement passe de 10 à 21, comme sur ta capture d'écran? Si c'est cela, sa n'a aucune importance. En faisant "SELECT Porte FROM e_s" tu va recevoir tout les enregistrements. Si tu les veux dans un ordres particulier utilise "ORDER BY" dans ta requête de sélection.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Comme le dit Crayon, les sauts de numéro ne posent aucun problème, c'est même très courant avec les suppressions !

    Il te faut débugger tes boucles !
    On ne peut t'aider plus, ton code semble correct !


    HS : Mifare, Desfire... je vois très bien le sujet ... une mini gestion de contrôle d'accès
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci de votre aide j'ai essayé en vain de corriger l'erreur mais j'ai rendu mon projet en temps et en heure mais sans pouvoir le finir

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2011, 03h18
  2. recherche dans une base de donnée toute entière
    Par mitnick2006 dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/08/2008, 11h38
  3. Suppression de toutes les tables dans une base de données
    Par GDMINFO dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2007, 08h24
  4. créer une boulce pour lire dans une base de donnéé MySQL
    Par pierrot10 dans le forum Administration
    Réponses: 1
    Dernier message: 26/07/2006, 14h21
  5. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27

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