Hello,
Toujours avec mes BLOB et mes CLOB et ca me gonfle...
La récupération et le stockage en BD de mes BLOB ont l'air de se faire correctement...
voici le code que j'utilise (on sait jamais, si quelqu'un trouve une erreur... )
Insertion BLOB :
Code :
- ResultSet rs = null;
- Statement st = null;
- try {
- st = conn.createStatement();
- String qry = "UPDATE "+table+" SET "+blobField+"=empty_blob() WHERE "+clause;
- st.execute(qry);
- qry = "SELECT "+blobField+" FROM "+table+" WHERE "+clause+" FOR UPDATE";
- st = conn.createStatement();
- rs = st.executeQuery(qry);
- rs.next();
- oracle.sql.BLOB blob = ((oracle.jdbc.OracleResultSet)rs).getBLOB(blobField);
- OutputStream os = blob.getBinaryOutputStream();
- int n;
- byte[] ch = new byte[1024];
- while((n = is.read(ch,0,1024)) > 0) { // is = InputStream
- os.write(ch,0,n);
- }
- os.flush();
- os.close();
- closeStatement(rs, st);
- } catch (SQLException sqle) {
- closeStatementWithInternCatchException(rs, st);
- throw new DBException(sqle);
- } catch (IOException ioe) {
- closeStatementWithInternCatchException(rs, st);
- throw new DBException("I/O : "+ioe.getMessage());
- }
|
récupération BLOB :
Code :
- PreparedStatement ps = null;
- ResultSet rs = null;
- try {
- String qry = "SELECT "+blobField+" FROM "+table+" WHERE "+clause;
- ps = conn.prepareStatement(qry);
- rs = ps.executeQuery();
- if (rs.next() == false) {
- // pas d'enregistrement trouvé
- System.out.println("Hu hum.. pas d'enregistrement trouvé dans readOracleBlob()" );
- return null;
- }
- oracle.sql.BLOB blob=((oracle.jdbc.OracleResultSet)rs).getBLOB(blobField);
- InputStream is = blob.binaryStreamValue();
- return is;
- } catch (SQLException sqle) {
- closeStatementWithInternCatchException(rs, ps);
- throw new DBException(sqle);
- }
|
suppression BLOB :
alors là, je bloque un peu...
étant donné qu'Oracle stocke le BLOB a part, pas directement dans la base, je me demande si un
DELETE FROM DOCUMENTS WHERE DOCid = 10 (le BLOB fait partie de la table DOCUMENTS)
suffit a supprimer ce de BLOB ???
Vous en pensez koi ??
(j'ai du mal a trouver de bonnes URL sur les BLOB sur le net, je suis donc preneur de toutes URL..)
Merciiiii !!!!!
---------------