Segunda-feira, 20 de outubro de 2003 às 02h59

Salvando imagens no banco de dados

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Olá, pessoal. Desculpem-me pela demora e pela pausa no assunto anterior, mas me envolvi em alguns projetos e estou "correndo mais que notícia ruim". Mas isso não significa que a coluna ficará abandonada. Prometo recuperar o tempo perdido assim que possível.

Neste artigo veremos como gravar e ler imagens de um banco de dados (algo que é muito pedido por e-mails).

Let's Rock!

Para armazenar as imagens em um banco, precisamos definir o campo que irá contê-la como um tipo especial que suporte formatos que não sejam plain text: o Blob.

Blob (em JAVA)

Blob é uma interface JDBC mapeada para um tipo SQL BLOB. Um blob é obtido pelo método getBlob() de um ResultSet ou de um CallableStatement.

Um blob possui também métodos para recuperar seu número de bytes e determinar a posição inicial de outro Blob ou um array de bytes no blob atual.

Este métodos funcionam sem materializar os dados. Para materializar os dados, podemos utilizar o método getBinaryStream() ou getBytes().

Para armazenar o blob, utilizamos o método setBlob() a partir de um PreparedStatement ou updateObject de um ResultSet atualizável.

Vejamos agora como inserir uma imagem em um campo Blob:

  try{
    ...
    File arquivo = new File(...);
    FileInputStream inputStream = new FileInputStream(arquivo);
    PreparedStatement pstmt =  conn.prepareStatement("insert into
IMAGE_TABLE values (?,?)"); pstmt.setString(1,arquivo.getName()); pstmt.setBinaryStream(2,inputStream,(int)arquivo.length()); pstmt.executeUpdate(); ... } catch(...){ ... }

A seguir, veremos como obter uma imagem salva em um campo Blob:

   try{ 
    ...
    rs = pstmt.executeQuery();
    if( rs.next() ){
      Blob blob = rs.getBlob(1);
      ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length())); 
    }
    ...
  }
  catch(...){
    ...
  }

Espero que o exemplo seja útil para vocês assim como foi para todos aqueles que me pediram por e-mail!

Ficamos por aqui pessoal. Um forte abraço e até a próxima!

 

2 comentários

 CJanayna
02/08/2005 16h39

Blob problemático

Olá,
Quando da recuperação da imagem, é criada um arquivo do mesmo tamanho da imagem, mas não é possível vizualizá-lo. Qual será o problema?
Agradeço a atenação,

 Milena Sene
27/08/2008 09h05

Oiiiii!

Só parabenizando pelo artigo... Era exatamente o que eu estava precisando, funcionou direitinho :)

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.