Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2812 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Résolu][JDBC] Insertion image base de données Oracle 9i

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu][JDBC] Insertion image base de données Oracle 9i

n°1809048
TomZ
Posté le 06-11-2008 à 16:07:27  profilanswer
 

Bonjour à tous  :hello: ,
 
Voilà j'ai réalisé un programme qui extrait des images d'une base de donnés (contenues dans un blob), ces images sont ensuite compressées en JPG puis doivent être réinjectées dans cette même base.
Malheureusement, impossible de mettre à jour le BLOB associé.
 
J'ai d'abord testé avec l'exemple ci-dessous (issus de http://ricky81.developpez.com/tuto [...] blob/#L3.2)
 

Code :
  1. File monImage = new File(vTableValue);
  2. FileInputStream istreamImage = new FileInputStream(monImage);
  3. PreparedStatement ps = connection.prepareStatement("UPDATE TABLE SET IMAGE_NAME=?, IMAGE_TYPE=?, IMAGE=? where R_ID='"+R_ID+"'" );
  4. ps.setString(1, NAME);
  5. ps.setString(2, MIME);
  6. ps.setBinaryStream(3, istreamImage, (int)monImage.length());
  7. ps.executeUpdate();
  8. ps.close();


 
Visiblement, ça ne fonctionne pas, le programme de lecture (utilisé initialement pour extraire les images de la base pointe sur un "NULL" lorsque j'essaie d'extraire l'image ainsi insérée). Aucune exception n'est cependant levée.
 
J'ai donc ensuite tenté avec un tableau de byte:
 

Code :
  1. File monImage = new File(vTableValue);
  2. FileInputStream istreamImage = new FileInputStream(monImage);
  3. int size = istreamImage.available();
  4. byte[] tab = new byte[size];
  5. istreamImage.read(tab);
  6. PreparedStatement ps = connection.prepareStatement("UPDATE SPECIALS_PRODUCT SET IMAGE=? where R_ID='"+R_ID+"'" );
  7. ps.setBytes(1, tab);
  8. ps.executeUpdate();
  9. ps.close();


 
Cette deuxième méthode fonctionne mais pour des images inférieures à 4ko. Sinon, une exception est levée:
 

Code :
  1. java.sql.SQLException: La taille des données est supérieure à la taille max. pour ce type: 9717
  2. at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
  3. at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
  4. at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:95)
  5. at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2414)
  6. at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1134)
  7. at oracle.jdbc.driver.OraclePreparedStatement.setBytes(OraclePreparedStatement.java:2170)
  8. at com.steelcase.image.ImageInsertBdD.sauveIMG(ImageInsertBdD.java:88)
  9. at com.steelcase.image.ImageInsertBdD.main(ImageInsertBdD.java:34)


 
D'après la structure de la base, le BLOB est défini à 4000 or l'application "Web" client derrière peut mettre des images largement supérieures (2,3,4Mo).
 
Je suis un peu "sec" sur le sujet, le net conseillant d'utiliser la première méthode qui ne passe pas chez moi.
 
Avez-vous des pistes?
 
Merci


Message édité par TomZ le 06-11-2008 à 17:48:07
mood
Publicité
Posté le 06-11-2008 à 16:07:27  profilanswer
 

n°1809106
TomZ
Posté le 06-11-2008 à 17:47:44  profilanswer
 

Voici trouvé la réponse,
 
Tout est désigné la dedans:
 
http://www.javafr.com/forum/sujet- [...] 31826.aspx


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Résolu][JDBC] Insertion image base de données Oracle 9i

 

Sujets relatifs
Concatenation de fichiers excel de même format dans une base access[AS3] [RESOLU] Changer un TextField.text
Suppresion des doublons d'une base de donnéesMais comment font ces méta moteurs pour alimenter leur base de données
Driver JDBC : Probleme lors de la récupération de caractere spéciauxAgrandir une image au survol de la mignature: Problème
[résolu] Hibernate Annotations et oneToMany EAGERCommunication Oracle - SQL SERVEUR
Plus de sujets relatifs à : [Résolu][JDBC] Insertion image base de données Oracle 9i


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR