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 :
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.enregDocWord - Enregistrement docWord = java.io.FileInputStream@f8395f / fichierWord.length() = 68608
J'ai repris le code trouvé ici : http://java.developpez.com/faq/jdbc/?page=types#blob
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
Partager