Gravando/lendo campo Blob em banco Oracle 10g  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
julianostr
GUJ Ranger
[Avatar]

Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline

Pessoal, estou colocando aqui a solução para gravar e ler um campo Blob num banco Oracle 10g Release 10.1.0.4.0.
É necessário utilizar o driver ojdbc14.jar (manifest 10.1.0.4.0) e os pacotes commons-fileupload-1.1.1.jar e commons-io-1.2.jar. (http://jakarta.apache.org/commons/fileupload/)
Notem que o exemplo do servlet é extremamente simples onde eu sequer fiz validação do tipo de arquivo para upload, está fixo um .jpg.

Exemplo .jsp:


Exemplo servlet:


LASER
Light Amplification by Stimulated Emission of Radiation
mcruz
Debugger
[Avatar]

Membro desde: 19/05/2006 17:13:52
Mensagens: 62
Offline

Olá Juliano, trago este tópico de volta, pois, estou com um problema ao tentar executar o código que vc descreveu. Peço, por favor, que me diga onde está o erro, pois acho que não está muito diferente do código q vc postou. Agradeço a ajuda de todos.
No meu servlet RenderPhoto.java está assim:



e o método de DBFoto que recupera a stream é (acho está ok):



Estou usando um tal de oracle_thin_driver.jar, mas já testei com o ojdbc14.jar e dá no mesmo.
Eu já debuguei com o Eclipse e o método realmente retorna a stream (linha 46), mas na hora de ler a stream para o array de bytes (linha 47) dá o seguinte erro:

mcruz
Debugger
[Avatar]

Membro desde: 19/05/2006 17:13:52
Mensagens: 62
Offline

O engraçado é que aparece outro tipo de erro agora:

julianostr
GUJ Ranger
[Avatar]

Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline

Pelo seu segundo erro não há nada no stream (imageStream). Verifique se realmente está retornando algo da base.


LASER
Light Amplification by Stimulated Emission of Radiation
mcruz
Debugger
[Avatar]

Membro desde: 19/05/2006 17:13:52
Mensagens: 62
Offline

Está sim(veja na imagem anexa a tela do debug).
O que mais poderia ser??
[Thumb - debug.JPG]
 Nome do arquivo debug.JPG [Disk] Download
 Descrição debug
 Tamanho 150 Kbytes
 Baixado:  155 vez(es)

mcruz
Debugger
[Avatar]

Membro desde: 19/05/2006 17:13:52
Mensagens: 62
Offline

[RESOLVIDO]
Desculpe, Juliano, não atentei para um detalhe do seu código:
A conexão com o banco é fechada DEPOIS das operações de leitura/escrita sobre a InputStream.
Só percebi o erro após ver a explicação nesse post de outro fórum. No meu código, a classe do banco está naquele padrão: abre conexão, recupera dados, fecha conexão e entrega daods pro action, a NullPointerException era por causa da conexão fechada.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team