Olá amigos,
Estou tentando importar um arquivo binario para o banco de dados Oracle pelo java.
Fiz todo o código
public ImportBlob() {
try{
int length;
long tam_blob;
oracle.sql.BLOB blob;
SQL = "delete from demo where id=7";
conn.Insert(SQL);
SQL = "insert into demo(id,theBlob) values(7,empty_blob())";
conn.Insert(SQL);
System.out.println("Ready");
rs = conn.Select("select theBlob from demo where id=7");
rs.next();
blob = ((oracle.jdbc.driver.OracleResultSet)rs).getBLOB(1);
java.io.File url = new java.io.File("Iceberg.jpg");
java.io.FileInputStream instream = new java.io.FileInputStream(url);
java.io.OutputStream outstream = blob.getBinaryOutputStream();
byte[] chunk = new byte[blob.getChunkSize()];
int i=-1;
System.out.println("Loading");
while((i = instream.read(chunk)) != -1){
outstream.write(chunk,0,i);
System.out.print('.');
}
System.out.println("
Desenho Carregado");
instream.close();
outstream.close();
conn.setClose();
System.out.println("Finish");
}catch(java.io.IOException ex){
ex.printStackTrace();
System.out.println("2 = "+ex.getMessage());
}catch(java.sql.SQLException ex){
ex.printStackTrace();
System.out.println("3 = "+ex);
}catch(Exception ex){
ex.printStackTrace();
System.out.println("4 = "+ex);
}
}
Mas ocorre o seguinte erro, quando está lendo o binário.
java.io.IOException: ORA-22920: linha contendo o valor de LOB não está bloqueada
ORA-06512: em "SYS.DBMS_LOB", line 700
ORA-06512: em line 1
at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:618)
at oracle.jdbc.driver.OracleBlobOutputStream.flushBuffer(OracleBlobOutputStream.java:195)
at oracle.jdbc.driver.OracleBlobOutputStream.flush(OracleBlobOutputStream.java:157)
at ImportBlob.<init>(ImportBlob.java:34)
at ImportBlob.main(ImportBlob.java:56)
2 = ORA-22920: linha contendo o valor de LOB não está bloqueada
ORA-06512: em "SYS.DBMS_LOB", line 700
ORA-06512: em line 1
Desde já agradeço sua ajuda…