Newsgroup: it.comp.java
Titolo: Blob Oracle

Ho cercato di inserire un file in un campo blob su oracle 9i come segue:
       String sqlU = "INSERT INTO TEST  VALUES( ?,?)";
       PreparedStatement pstmt = con.prepareStatement(sqlU);
       File fi = new File("C:\\Delibera.sxw");
       InputStream fis = new BufferedInputStream(new FileInputStream(fi));
       pstmt.setString(1,"1234");
       pstmt.setBinaryStream(2,fis,fis.available());
       pstmt.executeUpdate(); oppure pstmt.execute();
       pstmt.close();
ma quando lo mando in esecuzione mi da l'errore come sotto:
java.sql.SQLException: Eccezione IO: Connection reset
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at
oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2061
)
at
oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java
:2709)
at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState
ment.java:589)
at openoffice.Model.insertBlob(Model.java:112)
at openoffice.Model.main(Model.java:26)
Qualcuno mi sa dire come posso risolvere questo problema grazie in anticipo.

        pstmt.close();
Almeno fino alla versione 8i, per scrivere in un blob su oracle devi prima
fare una insert con un empty blob, se non sbaglio: leggi la documentazione
specifica oracle riguardo alla programmazione jdbc, c'è un capitolo apposta
che parla di come scrivere nei blob.

 che parla di come scrivere nei blob.
Si lo so infati per inserirlo faccio cosi come tu dici vedi sotto :
public void getBlob(Connection con)throws java.sql.SQLException
{
     String sqlS = "SELECT * FROM TEST2";
     Statement pstmt = con.createStatement();
     ResultSet set = pstmt.executeQuery(sqlS);
     set.next();
     //byte testo[] = set.getBytes(2);
     java.sql.Blob blob
=((oracle.jdbc.OracleResultSet)set).getBLOB(2);//set.getBlob(2);
     try
     {
      InputStream in = blob.getBinaryStream();
      System.out.println("blob= "+in.available());
     }
}
public void insertBlob(Connection con)throws java.sql.SQLException
{
    try
     {
      File fi = new File("C:\\Delibera.sxw");
      String  sqlNewRow  = "INSERT INTO TEST2  VALUES (?,EMPTY_BLOB())",
             sqlSetBlob  = "UPDATE TEST2 SET DATI = ? WHERE ID = ?";
      PreparedStatement pstmt = con.prepareStatement(sqlNewRow);
      pstmt.setString(1,fi.getName());
      pstmt.execute();
      pstmt.close();
      FileInputStream input = new FileInputStream(fi);
      InputStream fis = new BufferedInputStream(new FileInputStream(fi));
      pstmt = con.prepareStatement(sqlSetBlob);
      pstmt.setString(1,fi.getName());
      pstmt.setBinaryStream(2,fis,fis.available());
      pstmt.executeUpdate();
      pstmt.close();
     }
     catch (SQLException se)
     {
       se.printStackTrace();
     }
     catch(IOException io)
     {
       io.printStackTrace();
     }
  }

       pstmt.close();
Comunque di BLOB e CLOB ne parlammo tempo fa, vedi questo link su google:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&th=f2d63b44faf7b506&rnum=1
Ciao,
    Bruno.
-- 
| Bruno Bossola 
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
|
| Membro del JUG Torino - 
http://www.jugtorino.it
| 

Ho realizzato un programma in java che fa uso di una imagine *.png. Vorrei
distribuire tutto evitando di lasciare il file in bella vista.
Alla luce di questo m chiedevo se era possibile inserire l'immagine nel file
Jar e utilizzarla da li.
Grazia C.


Uh... si ma sei tremendamente off-topic con questo thread :-)
Comunque, getResource() e getResourceAsStream() per leggere dal jar dell'applicazione: dai
un'occhiata alla documentazione:
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Class.html#getResource(java.lang.String)
Per operazioni particolari sul jar:
http://java.sun.com/docs/books/tutorial/jar/api/jarclassloader.html


 nel file Jar e utilizzarla da li.
http://space.tin.it/computer/csadun/resjars.html
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun