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

JDBC Java Discussion :

Pb pour lire un grand nombre de données


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut Pb pour lire un grand nombre de données
    Bonjour

    Je développe une application qui va lire dans une base de données Mysql une liste de produit chacun ayant plusieurs propriétés. tous le produit se trouvent dans une table, cette table contient a peu près 40 champs, et 14000 produits
    je créer un statement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Statement stmtArticleComplet;
    stmtArticleComplet=(Statement) con.createStatement();
    Puis je créer un ResultSet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      rsArticle_complet= (ResultSet) stmtArticleComplet.executeQuery(queryArticleComplet);
    avec queryArticleComplet qui est un requête SQL qui fonctionne tester plusieurs et sortie d'un programme en PHP utilisant cette requête.

    Enfin je place les données du Resultset dans un ARRAYLIST
    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
    ResultSetMetaData mdArticle= rsArticle_complet.getMetaData();
                    while (rsArticle_complet.next()) {
     
                        code_fournisseur.addElement(rsArticle_complet.getString("RefFabricant"));
     
                            for (int i=1 ; i<=mdArticle.getColumnCount() ; i++){
     
                               //Cela me sert pour décoder des chaînes de caractères en HTML        
                                        String html_article=
    StringEscapeUtils.unescapeHtml(rsArticle_complet.getString(i));
                                        article_complet.add(html_article);  //Article_complet est un ArrayList
     
                                        colonne.add(i+"."+mdArticle.getColumnLabel(i));
     
     
                                }
     
                            //System.out.println(article_complet);
                            }
    Alors dejà c'est long, et surtout j'ai cette erreur,
    IWAV0052E Invocation Target Exception creating connexions_virtuemart.connect_bdd
    java.lang.reflect.InvocationTargetException
    Caused by: java.lang.OutOfMemoryError: Java heap space
    je précise que si ma base de données est locale avec wamp par exemple ben c'est long au démarrage mais ça fonctionne bien, la même base de données mais a distance et j'ai l'erreur du dessus.
    Je ne sais pas quoi modifier ni même comment faire de plus si je modifie l'allocation mémoire de la JVM ben ça fonctionne mais je le fais dans Eclipse et je ne sais pas le faire pour un Jar exécutable.
    Si quelqu'un à une idée.
    Merci de votre attention

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    question initiale (mais fondamentale): pourquoi as-tu besoin de 14000 articles en mémoire?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Par défaut
    Je rejoins la question de shadoko !
    Je suis curieux aussi de savoir aussi pourquoi tu souhaites garder 14000 objets avec 40 attributs chacun en mémoire, c'est assez gros !
    Pourrais-tu nous expliquer un peu plus ton besoin ?

    Ne pourrais-tu pas plutôt récupérer les articles dont tu as besoins pour travailler dessus ?

    Si tu as besoin de travailler sur de nouveaux articles, tu fais un nouvelle requête !

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Ben je me doutes que je dois effectivement pouvoir le faire autrement sauf que je ne comprend pas, moi je veut que les personnes aient la liste de tous leur articles et quand elles cliquent dessus ben le prix, l'image si il y a des MP3 le dernier prix d'achats etc... soit visible donc je me suis dit je charge tous dans un tableau et je fais les traitements dessus, il faut bien qu'ils aient accès à tous leur produit, comment puis je faire autrement?
    Sinon je peut faire une requête qui permet d'afficher les articles dans la JTable quand on clique sur un produit ça exécute une nouvelle requête, mais j'ai l'impression que la connection est lente donc si je fais comme ça ben mon programme sera pas fluide du tout.
    Comment je pourrais faire autrement?
    Merci pour vos réponses

  5. #5
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    excuses moi mais je n'ai pas précisément compris le comportement de ton application (+ j'ai du mal à croire que l'utilisateur ai besoin d'avoir autant de choses sous les yeux).
    Ceci dit on est probablement devant une problématique de cache: tu gardes en mémoire un certain nombre d'articles, tu renouvelles ce cache en anticipant (encore mieux si c'est asynchrone), etc.
    Le choix d'un article est-il "direct" (l'utilisateur pique selon sa fantaisie le 7678° article), ou est-ce linéaire (article suivant svp)?
    dans une interface graphique tu auras toujours N articles "visibles" et tu peux "peupler" la plage de ce qui est visible au fur et à mesure.

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    petite explication complémentaire:
    - tu "vois" 50 articles dans ton interface graphique
    - tu gardes en mémoire les 100 derniers articles consultés (les autres sont "poubellisés")
    - tu a les 50 articles suivants en réserve
    - tu es en train de charger en tâche de fond encore 50 articles
    petite complication: prévoir une navigation bi-directionnelle. mais bon ....

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Bonjour

    Je précise quand même que je suis débutant en java, c'est un logiciel de gestion de magasin, je le fais pour moi pour m'entrainer, et un ami qui tiens un magasin m'a donné sa base de donnée, et il y a 14000 produits.
    Si un client vient au magasin acheter ou commander l'article 76881 ben le magasin doit le retrouver, moi j'ai mis une JTable avec un champ de recherche, et les 14000 produits, c'est peut être pas la bonne méthode, mais l'idée que dans l'interface graphique on puisse peupler au fur et à mesure, me plais bien mais je suis pas sur de comprendre, j'affiche les 100 premiers, par exemple, et il demande l'article 76881 qui n'est pas dans ces 100 produits afficher que ce passe t-il?
    Comment le magasin aura accès a cet article?
    J'ai tester de faire les requêtes que lorsque j'en ai besoin, et je n'ai plus l'erreur de la mémoire, ceci dit ce n'est pas très fluide (mais plus que ce que je pensais), peut tu m'en dire plus sur l'histoire de peupler au fur et à mesure stp
    merci encore pour vos réponses

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

Discussions similaires

  1. [2000] Meilleure méthode pour insérer un grand nombre de lignes
    Par nicodev24 dans le forum Développement
    Réponses: 11
    Dernier message: 31/10/2016, 11h25
  2. Stratégie pour afficher un grand nombre de données
    Par oneagaindoguys dans le forum Général Java
    Réponses: 50
    Dernier message: 09/12/2010, 10h22
  3. Requête pour modifier un grand nombre d'entrée
    Par gatsu00 dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/11/2007, 09h47
  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. Type PostgreSQL pour stocker des grands nombres
    Par K-Kaï dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/06/2006, 20h26

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