[Résolu][JDBC] Insertion image base de données Oracle 9i
Insertion image base de données Oracle 9i [Résolu][JDBC] - Java - Programmation
MarshPosté le 06-11-2008 à 16:07:27
Bonjour à tous ,
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é.
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 :
File monImage = new File(vTableValue);
FileInputStream istreamImage = new FileInputStream(monImage);
int size = istreamImage.available();
byte[] tab = new byte[size];
istreamImage.read(tab);
PreparedStatement ps = connection.prepareStatement("UPDATE SPECIALS_PRODUCT SET IMAGE=? where R_ID='"+R_ID+"'" );
ps.setBytes(1, tab);
ps.executeUpdate();
ps.close();
Cette deuxième méthode fonctionne mais pour des images inférieures à 4ko. Sinon, une exception est levée:
Code :
java.sql.SQLException: La taille des données est supérieure à la taille max. pour ce type: 9717
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:95)
at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2414)
at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1134)
at oracle.jdbc.driver.OraclePreparedStatement.setBytes(OraclePreparedStatement.java:2170)
at com.steelcase.image.ImageInsertBdD.sauveIMG(ImageInsertBdD.java:88)
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.
Marsh Posté le 06-11-2008 à 16:07:27
Bonjour à tous ,
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)
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:
Cette deuxième méthode fonctionne mais pour des images inférieures à 4ko. Sinon, une exception est levée:
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