Estou usando o Oracle 9, Tomcat 5 e Eclipse 3.2
Tenho uma tabela ‘IMAGEM’ onde tenho os campos código (integer), descricao (varchar) e objeto (blob).
Quando tento recuperar o valor do campo objeto (blob) para gerar uma imagem, o procedimento só funciona dentro da mesma transação:
// comando sql para recuperar o blob
String sql_select = "SELECT CODIGO, DESCRICAO, OBJETO FROM IMAGEM WHERE CODIGO = 2";
...
// executa consulta no banco
rs = ps.executeQuery();
if (rs.next()) {
...
// armazena o blob no vo
imagemVO.setObjeto(rs.getBlob("objeto"));
byte[] b = new byte[BUFFER]; // buffer igual a 32768
int indice = imagem.getIn().read(b,0,BUFFER);
// configura destino
File destino = new File(caminho + File.separatorChar + "imagem_" + codigo + ".jpg");
FileOutputStream fos = new FileOutputStream(destino, true);
// grava dados
while (indice != -1) {
fos.write(b, 0, indice);
indice = imagem.getIn().read(b,0,BUFFER);
}
fos.flush();
agora se eu fizer um método que eu passe o blob ou então o InputStream como parâmetro ele não funciona
public void gerarImagem(InputStream in,
String caminho, int codigo) throws IOException, SQLException
Alguém sabe como eu retiro essa dependência do InputStream da transação?
especificação do tipo blob http://java.sun.com/j2se/1.3/docs/api/java/sql/Blob.html
Desde já, grato.