Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Blob Oracle

3 views
Skip to first unread message

Akey

unread,
Apr 8, 2003, 1:27:02 AM4/8/03
to
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.


Immanuel

unread,
Apr 10, 2003, 5:46:31 AM4/10/03
to
> 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();

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.


Akey

unread,
Apr 9, 2003, 1:21:52 PM4/9/03
to

> 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.

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


Bruno Bossola

unread,
Apr 11, 2003, 3:20:42 AM4/11/03
to
On Wed, 9 Apr 2003 19:21:52 +0200, "Akey" <igli...@libero.it> wrote:

>
>> Almeno fino alla versione 8i, per scrivere in un blob su oracle devi prima

>> fare una insert con un empty blob...


>
>Si lo so infati per inserirlo faccio cosi come tu dici vedi sotto :
>

No, non lo sai o almeno non lo sapevi, questo e' il tuo post originale:

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


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
|

coco

unread,
Apr 11, 2003, 4:40:04 AM4/11/03
to
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.


Bruno Bossola

unread,
Apr 11, 2003, 7:37:00 AM4/11/03
to
On Fri, 11 Apr 2003 10:40:04 +0200, "coco" <co...@libero.it> wrote:

>Alla luce di questo m chiedevo se era possibile inserire l'immagine nel file
>Jar e utilizzarla da li.
>

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

Cristiano Sadun

unread,
Apr 11, 2003, 7:46:25 AM4/11/03
to
"coco" <co...@libero.it> wrote in
news:b75v14$2q2$1...@lacerta.tiscalinet.it:

> Alla luce di questo m chiedevo se era possibile inserire l'immagine
> 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

0 new messages