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 :

comment afficher un tableau Jtable d'image BLOB depuis la base de données


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Par défaut comment afficher un tableau Jtable d'image BLOB depuis la base de données
    Bonjour j'ai un problème au niveau d'affichage des images enregistré dans la BDD.
    J'ai cette errer au niveau de l'execution : java.lang.NullPointerException





    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
    public void afficher(){
           // byte[] fileBytes;
            byte[] imgData = null ;
            DefaultTableModel model = new DefaultTableModel();
           model.addColumn("IMAGE_ID");
           model.addColumn("IMAGE_NAME");
           model.addColumn("IMAGE_DATA");
     
            //Blob img ;
       // byte[] imgData = null ;
     
     
           String requetteaffiche="SELECT * FROM saved_image ";
            try {
               st=maconnexion.obtenir().createStatement();
                ResultSet resultat=st.executeQuery(requetteaffiche);
     
                while (resultat.next()) {
                    String id = rs.getString(0);
                     String name=rs.getString(1);
                                Blob blob = rs.getBlob(2);
                     ImageIcon icon = null;
                     InputStream is = blob.getBinaryStream();
                     BufferedImage img = ImageIO.read(is);
                     icon = new ImageIcon(img);
     
     
     
                     model.addRow(new Object[]{resultat.getString("IMAGE_ID"),icon});
     
                }
     
            } catch (Exception e) {
                System.out.println(e);
            }
            jtable.setModel(model);
     
        }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Au lieu de System.out.println(e);, faire :

    Comme ça tu auras la ligne où se passe l'exception.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Par défaut
    voila ce que ça donne : en remplaçant le System.out.println(e)
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Et c'est quoi le code de la ligne 60 ?

    (Tu pouvais copier la stacktrace en texte plutôt qu'en image)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Blob blob = rs.getBlob(2);
    java.lang.NullPointerException
    at selector.display.afficher(display.java:60)
    at selector.display.<init>(display.java:32)
    at selector.display$1.run(display.java:154)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Hum, c'est étrange. Parce que la seule manière d'obtenir une NullPointerException sur cette ligne, c'est d'avoir rs null. Et si rs est null, alors on devrait avoir une NullPointerException avant, sur cette ligne rs.getString(0);.

    Mais avec cette info, le problème est évident. Il aurait dû nous sauter aux yeux avant, à la première lecture.

    Ce code montre que tu récupères la réponse de l'exécution de la requête dans la variable resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ResultSet resultat=st.executeQuery(requetteaffiche);
     
                while (resultat.next()) {
    Donc, chercher à lire chaque colonne dans la variable rs n'a aucun sens et il est probable que cette variable ne soit même pas initialisée, d'où la NullPointerException.


    PS:
    1. Il est indispensable de libérer les ressources allouées par la création de statement ou de resultset (utilisation d'un try-with-resources)
    2. Il est préférable d'exécuter la partie requête dans un thread différent de celui de l'UI, pur éviter de la geler pendant l'opération, ce que tu pourras faire avec un SwingWorker
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/03/2013, 21h41
  2. Réponses: 0
    Dernier message: 14/03/2013, 03h42
  3. Gestion d'une table de base de données avec JCombox
    Par cotede2 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/10/2009, 16h25
  4. afficher une ligne précise d'une table de base de donnée MySql
    Par developppez dans le forum Windows Forms
    Réponses: 19
    Dernier message: 15/01/2009, 23h14

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