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 :
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 : 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();