Bonjour,
dans mon programme je suis sensé lire une table source qui contient une colonne de type BLOB, et insérer certaines lignes dans une table cible.
Problème :
De temps en temps, mes inserts plantent avec l'erreur "ORA-00942: table or view does not exist".
Pourtant, mes inserts sont tous de la même forme :o
Voici la partie du code concernée :
J'ai d'abord pensé que ça pouvais venir du fait que pour certaines lignes, la valeur de la colonne blob est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 ConnexionOracleViaJdbc connexionCibleBlob = new ConnexionOracleViaJdbc( Lanceur.prop.getProperty("USER_CIBLE"), Lanceur.prop.getProperty("PASSWORD_CIBLE"), Lanceur.prop.getProperty("URL_ORACLE_CIBLE")); String insertWithBlob = ligneInsertion.toString().replace("EMPTY_BLOB()", " ? "); insertWithBlob = insertWithBlob.replace(" VALUES", " ("+sbColonnes.toString()+") VALUES"); insertWithBlob = insertWithBlob.replace(table.getNom(), connexionCibleBlob.getOraclesource().getUser()+"."+table.getNom()); PreparedStatement pstmt = connexionCibleBlob .createStatement(insertWithBlob); pstmt.setBlob(1, blob); pstmt.executeUpdate(); pstmt.close(); logger.log(Level.INFO, "\t\t[FIN] Traitement blob"); connexionCibleBlob.fermer();
Ce problème ne se produit pas si je modifie le code comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 String insertWithBlob = ligneInsertion.toString().replace("EMPTY_BLOB()", " NULL "); insertWithBlob = insertWithBlob.replace(" VALUES", " ("+sbColonnes.toString()+") VALUES"); insertWithBlob = insertWithBlob.replace(table.getNom(), connexionCibleBlob.getOraclesource().getUser()+"."+table.getNom()); PreparedStatement pstmt = connexionCibleBlob .createStatement(insertWithBlob); //pstmt.setBlob(1, blob); pstmt.executeUpdate(); pstmt.close(); logger.log(Level.INFO, "\t\t[FIN] Traitement blob"); connexionCibleBlob.fermer();
le problème viendrait donc des paramètres de notre statement, mais pourquoi, grand question :o
Partager