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 :

Gestion d'image en base de donnée


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut Gestion d'image en base de donnée
    Bonjour tous le monde

    Je dois stocker des images dans une base de donnée pour ensuite pouvoir les utiliser sous forme de vignette pour un onglet de "News" (pour vous donner une idée de a quoi sa doit ressembler ).

    J'ai le choix de choisir si je stock mes image en local puis mettre le lien en base ou alors directement mettre les images en bases. Ma préférences serait de les mettre en bases directement mais je ne sais pas si c'est rentable niveau temps et programmation.

    J'utilise sql server 2014.

    Si vous pouvez me conseiller.

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

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

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Points : 176
    Points
    176
    Par défaut
    Hello,

    Selon moi, le stockage intégral en database est mieux car tu fais qu'un appel et tu as ton image (sinon tu dois faire un appel pour le nom de l'image et un autre pour l'image dans le système).

    Ensuite niveau temps de dev, ca se vaut. Peut être plus rapide de faire la partie intégrale DB.
    J'ai une préférence pour travailler avec les DB car je trouve ca plus pérenne

    Jérémy.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 797
    Points
    4 797
    Par défaut
    Bonjour

    1) Stocker dans la base :
    - avantage : l'image est dans un enregistrement donc synchronisée avec les informations qui l'accompagne. Les images sont automatiquement sauvegardées avec la base de données (qui est sauvegardée régulièrement on est bien d'accord ?)
    - inconvénient : si tu as beaucoup d'images, cela fait grossir la base de donnée.

    2) Stocker dans un dossier dédié :
    - avantage : simplicité de stockage, ne fait pas grossir la base
    - inconvénientS :
    a) prévoir un programme spécifique pour les enregistrer (genre FTP)
    b) la synchronisation doit être gérée par un bricolage du genre attribuer un nom au fichier image qui soit identique à la clé primaire de
    l'enregistrement auquel elle se rapporte ou encore mettre le nom du fichier image dans l'enregistrement
    c) les sauvegardes ne sont pas synchronisées
    d) etc .

    je parie que tu devines déjà ma préférence ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Ok, merci beaucoup choukie12 et Népomucène pour vos réponse je pense que je vais me tourner vers la solution du stockage dans la base.

    J'aurais encore quelque petites questions :

    Qu'elle format je dois utiliser pour stocker mes images au sein de ma table ? D'après se que j'ai lus sur la toile sa parle de format "blob" hors j'ai du mal a comprendre se que sa représente dans une base et comment sont-il traiter pour que je puisse les utiliser sur mon projet.

    Merci d'avance.

  5. #5
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

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

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Points : 176
    Points
    176
    Par défaut
    Hello,

    BLOB, c'est Binary Large Object et dans ta colonne, tu auras la valeur en binaire de ce que tu stockes dedans.

    Pour le côté java, le stockage c'est quelque chose du genre :
    Tu dois stocker le stream de l'image/fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File file = new File("myPhoto.png");
          fis = new FileInputStream(file);
    // préparation de la requete
          ps = conn.prepareStatement(INSERT_PICTURE);
    //index représente le "numéro du parametre"
          ps.setBinaryStream(index,fis, (int) file.length());
    Pour la lecture,
    Tu lis un binaryStream ou un Blob :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream binaryStream = resultSet.getBinaryStream(indexDeTaColonneBlob);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Blob imageBlob = resultSet.getBlob(indexDeTaColonneBlob);
    byte[] imageBytes = imageBlob.getBytes(1, (int) imageBlob.length());
    Avec une préférence pour le getBinaryStream

    Jérémy.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Ok merci beaucoup sa fonctionne

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

Discussions similaires

  1. Gestion des images dans base de données
    Par Veselypapouch dans le forum VB.NET
    Réponses: 4
    Dernier message: 14/11/2010, 15h59
  2. Réponses: 3
    Dernier message: 19/09/2006, 15h36
  3. [MySQL] Stocker une image en base de données
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/03/2006, 22h51
  4. [MySQL] insertion d'une image en base de données
    Par SENCABOY dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/02/2006, 11h07
  5. [VB.NET]Champ image dans base de donnée access
    Par dankes dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/10/2005, 15h31

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