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 stocker un DefaultTreeModel dans une base PostgreSQL ?


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 192
    Points
    192
    Par défaut Comment stocker un DefaultTreeModel dans une base PostgreSQL ?
    Bonjour,


    Dans mon programme Java je construit un arbre en lisant ma base. L'arbre créer contient pour l'instant 300 éléments et c'est assez long...

    Pour l'instant je reconstruit l'arbre uniquement quand il y a des changements. Mais s'il y a un changement dans une autre instance du programme je dois reconstruire alors que l'autre instance l'a déjà fait.

    Donc j'aimerais stocker le DefaultTreeModel dans la base...

    Dans la table PostgreSQL la colonne est un OID (BLOB)... dois-je utiliser autre chose ?

    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preparedStatement.setObject(        4, arbre, Types.OTHER );
    Mais j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.postgresql.util.PSQLException: ERREUR: syntaxe invalide en entrée pour le type oid : « javax.swing.tree.DefaultTreeModel@1b4d774f »
    En fait il semble vouloir stocker l'adresse de l'objet et pas l'objet lui-même.

    Si qlq a une idée...

    Merci d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    En fait, l'objet que j'essaie de stocker dans la base n'est pas sérialisé.

    Donc j'ai écrit les méthodes de sérialisation et désérialisation qui me permettent de lire et écrire dans un objet Java dans la base de données.

    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
        // ========================================================================================================================================================
        /**
         * Sérialise un objet : Convertit un objet non sérialisé en byte[] sérialisé
         * @param objetNonSérialisé
         * @return
         */
        public static byte[] sérialiseObjet(Object objetNonSérialisé){
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
     
            try {
                ObjectOutputStream oos = new ObjectOutputStream(bos);
                oos.writeObject(objetNonSérialisé);
                oos.flush();
                oos.close();
            }
            catch (java.io.IOException e) {
                e.printStackTrace();
            }
     
            return bos.toByteArray();
        }
        // ========================================================================================================================================================
        /**
         * Désérialise : Convertit un objet sérialisé en byte[] en objet
         * @param objetSérialisé
         * @return
         */
        public static Object déSerialiseObjet(byte[] objetSérialisé){
            Object objetDéSérializé = null;
     
            try {
                ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(objetSérialisé));
                objetDéSérializé = ois.readObject();
            } catch (IOException ex) {
            } catch (ClassNotFoundException  ex) {
                GuiUserCom.erreur(ex);
            }
     
            return objetDéSérializé;
        }
    Si ça peut servir à qlq...

    Ensuite il suffit de lire et écrire un Blob sur une colonne OID.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2012, 18h08
  2. Comment stocker un réel dans une base Access avec ADO ?
    Par thibouille dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/11/2007, 08h59
  3. Stocker du Php dans une base Mysql
    Par tibrus dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/09/2005, 22h03
  4. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29
  5. Comment stocker un ficher dans une table postgres
    Par josoft dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/06/2003, 16h41

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