fichier de taille > 0 mais Blob de taille zéro en base Oracle
Je dois enregister un document MSword dans une base Oracle (champ CASU_DOC_WORD de type Blob). J'obtient un Blob de taille zéro (info fournie par Toad) alors que ma trace me donne :
Citation:
enregDocWord - Enregistrement docWord = java.io.FileInputStream@f8395f / fichierWord.length() = 68608
Ce que j'envoie à la base semble donc ne pas être vide, mais ce qui est stocké oui !? Le nom du document enregistré en même temps est bon.
J'ai repris le code trouvé ici : http://java.developpez.com/faq/jdbc/?page=types#blob
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| FileInputStream docWord = new FileInputStream(fichierWord);
con = Pool.getInstance().getConnection();
query = new StringBuffer("");
query.append("UPDATE CASU_CASU SET CASU_DOC_WORD_NOM = ?, CASU_DOC_WORD = ? ");
query.append("WHERE CASU_IDY = ? ");
pstmt = con.prepareStatement(query.toString());
log.debug("enregDocWord - Enregistrement docWord = " + docWord + " / fichierWord.length() = " + fichierWord.length());
pstmt.setString(1, nomDocWord);
pstmt.setBinaryStream(2, docWord, (int) fichierWord.length());
pstmt.setInt(3, idCasu);
pstmt.executeUpdate(); |