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

Entrée/Sortie Java Discussion :

Charger un fichier enregistré dans une table postgresql


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut Charger un fichier enregistré dans une table postgresql
    Bonjour les développeurs,

    Je veux récupérer (ouvrir) un fichier binaire qui est enregistré dans une table (postgrsql) cette table contient plusieurs champs dont le dernier champ est de type blob. Je veux le récupérer et l'ouvrir, quelqu'un peut me donner une idée ?

    PS : JDBC et les données binaire postés sur ce site ne m'ont pas aidé

    Merci d'avance pour votre aide

    Cordialement

  2. #2
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    Je commence à clairement avoir besoin d'un petit coup de pouce.
    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
    44
    45
    46
    47
    48
    49
    50
     
    try {
     
                 int cc=Integer.parseInt(c.getText());
                 String UrlBase = "jdbc:postgresql://localhost:5432/gestion";
                 String driver="org.postgresql.Driver";
                 String user = "postgres";
                 String MDP="******";
     
                 String selectSQL = "SELECT image FROM x WHERE code = ?";
     
                 Connection conn = DriverManager.getConnection(UrlBase, user,MDP);
     
                 PreparedStatement preparedStatement = conn.prepareStatement(selectSQL);
                 preparedStatement.setInt(1, cc);
     
     
                  ResultSet rs = preparedStatement.executeQuery();
     
                   InputStream userid = null;
                  while (rs.next()) {
     
     
                     userid = rs.getBinaryStream("image");
     
                 }       
                 FileOutputStream outputStream = null;
                 try {
                     outputStream = new FileOutputStream(new File("/Users/s.docx"));
                 } catch (FileNotFoundException ex) {
                     Logger.getLogger(DossierPatient.class.getName()).log(Level.SEVERE, null, ex);
                 }
     
    		int read = 0;
    		byte[] bytes = new byte[1024];
     
                 try {
                     while ((read = userid.read(bytes)) != -1) {
                         outputStream.write(bytes, 0, read);
                     }
                 } catch (IOException ex) {
                     Logger.getLogger(Dossier.class.getName()).log(Level.SEVERE, null, ex);
                 }
     
     
     
     
             } catch (SQLException ex) {
                 Logger.getLogger(Dossier.class.getName()).log(Level.SEVERE, null, ex);
             }
    Et la j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GRAVE: null
    java.io.FileNotFoundException: \Users\s.docx (Accès refusé)
    J'avoue que je ne sais pas si je dois créer le fichier vierge et si j'indique son chemin ensuite ou bien j'indique un chemin et le fichier se crée

    Pouvez vous m'aider ?

  3. #3
    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,

    Le message d'erreur indique que tu essayes de créer le fichier à un endroit où tu n'as pas le droit. Déjà ton chemin est relatif et je suppose que tu exécutes ton programme avec comme dossier d'exécution c:/ : on n'a pas le droit d'écrire dans le dossier Users de Windows. Il faut créer le fichier dans le dossier de ton utilisateur, voire un de ses sous-dossiers.

    Essaye par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FileOutputStream(new File(new File(System.getProperty("user.home"), "Documents"), "s.docx"));
    qui crééra le fichier dans ton dossier utilisateur "Documents" par exemple.

    Par ailleurs, la structure du code serait mieux ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (rs.next()) {
       try(InputStream userid = rs.getBinaryStream("image");
            FileOutputStream outputStream =  new FileOutputStream(new File(new File(System.getProperty("user.home"), "Documents"), "s.docx")); ) {
    	final byte[] bytes = new byte[1024];
            for (int read = userid.read(bytes); read!=-1; read = userid.read(bytes)) {
                 outputStream.write(bytes, 0, read);
            }
       } catch (IOException ex) {
           Logger.getLogger(Dossier.class.getName()).log(Level.SEVERE, null, ex);
       }
    } // while
    ce qui t'évitera (structure try-with-resources) d'avoir à te préoccuper de fermer les flux (ce que tu as "oublié" de faire dans ton code).
    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.

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    merci pour votre aide ça marche pas vraiment le fichier se crée normalement mais il est vide je l'ouvre et je ne trouve rien dedans !!! ou est le probléme à votre avis??(si c'est pas trop demandé bien sur)

  5. #5
    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
    Soit il est de taille nulle à la base, soit il est mal fermé (et n'a jamais été flushé). Tu as utilisé mon code, ou tu as modifié le tiens ? Quel est ton code actuel ?
    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.

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    c'est bon il est crée mais j'ai un msg d'erreur qui dit qu'impossible d'ouvrir le document peut etre il est mal formé!!!
    voila le code j'ai utilisé le votre

    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
     
     
     try {
                 // TODO add your handling code here:
                 int cc=Integer.parseInt(c.getText());
                 String UrlBase = "jdbc:postgresql://localhost:5432/gestion";
                 String driver="org.postgresql.Driver";
                 String user = "postgres";
                 String MDP="****";
     
     
     
     
     
                 String selectSQL = "SELECT nom ,image FROM x WHERE code = ?";
     
                 Connection conn = DriverManager.getConnection(UrlBase, user,MDP);
     
                 PreparedStatement preparedStatement = conn.prepareStatement(selectSQL);
                 preparedStatement.setInt(1, cc);
     
     
                  ResultSet rs = preparedStatement.executeQuery();
     
     
     
                               while (rs.next()) {
     
                                   System.out.println("je suis la");
       try(InputStream userid = rs.getBinaryStream("image");
            FileOutputStream outputStream =  new FileOutputStream(new File(new File(System.getProperty("user.home"), "Documents"), "s.docx")); ) {
    	final byte[] bytes = new byte[1024];
            for (int read = userid.read(bytes); read!=-1; read = userid.read(bytes)) {
                 outputStream.write(bytes, 0, read);
            }
       } catch (IOException ex) {
           Logger.getLogger(Dossier.class.getName()).log(Level.SEVERE, null, ex);
       }
    } 
     
             } catch (SQLException ex) {
                 Logger.getLogger(Dossier.class.getName()).log(Level.SEVERE, null, ex);
             }

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

Discussions similaires

  1. [Forms6I] charger un fichier texte dans une table
    Par Herveg dans le forum PL/SQL
    Réponses: 2
    Dernier message: 26/02/2010, 09h28
  2. charger les données d'un fichier .txt dans une table
    Par lemerite dans le forum Développement
    Réponses: 6
    Dernier message: 10/09/2008, 18h33
  3. enregistrer fichier csv dans une table
    Par decksroy dans le forum Forms
    Réponses: 14
    Dernier message: 28/02/2008, 19h16
  4. Charger Fichiers XML dans une table avec SQL*LOADER
    Par devdev2003 dans le forum SQL
    Réponses: 2
    Dernier message: 14/01/2008, 10h40

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