Gravar e recuperar imagem no Banco de Dados MySql

Pessoal, como faço para gravar e recuperar uma imagem no Banco de dados MySql?
Criei a tabela com o campo BLOB, mas, nao sei como faço para gravar e recuperar a mesma.
Alguem pode me dar um exemplo?

Obrigado!

Isso já foi muito discutido aqui, eu prefiro guardar as imagens em uma determinada pasta e no banco apenas o caminho dessa imagem, vc não carrega o banco com esses arquivos.

Pois é, mas, eu preciso mesmo guardar a imagem pois se a URL for corrompida o programa vira uma bagunça. Não é uma boa soluçao!

Preciso mesmo de um exemplo pratico de como gravar uma imagem (figura.jpg) no MySql e depois recuperá-la.

Será que alguem pode me ajudar?

http://www.guj.com.br/posts/list/30602.java
http://www.guj.com.br/posts/list/26893.java
http://www.guj.com.br/posts/list/27717.java
http://www.guj.com.br/posts/list/26586.java

Opa, tudo jóia colega?

olha só, eu fiz no postgresql… o código deve funcionar numa boa:

para gravar:

// Coluna "coluna_imagem" do tipo BLOB
String SQL = "UPDATE tabela_imagem SET coluna_imagem = ? " ....

stmtAlterar = conn.prepareStatement(SQL);

// O método getImagem() deve retornar um array de bytes
stmtAlterar.setBytes(1, umObjeto.getImagem());

para recuperar:


InputStream input = resultSet.getBinaryStream("coluna_imagem");

if(input != null){

   ByteArrayOutputStream output = new ByteArrayOutputStream();
   // set read buffer size

   byte[] rb = new byte[1024];
   int ch = 0;

   while ((ch = input.read(rb)) != -1){	
       output.write(rb, 0, ch);
   }

   // transfer to byte buffer
   byte[] b = output.toByteArray();
   input.close();
   output.close();

   // onde o método setImagem espera um array de bytes
   umObjeto.setImagem(b);                     
}          

depois, para aprsentar a imagem, na classe eu faço o seguinte:

public ImageIcon getImageIcon(){
        
        // onde imageIcon é, acredite, do tipo ImageIcon :)
        imageIcon = new ImageIcon();
        
        if(getImagem() != null){            

            // só lembrando... getImagem() retorna um array de bytes
            imageIcon  = new ImageIcon(getImagem()); 
        }       
               
        return imageIcon ;
}   

bom, espero ter ajudado!

[]'s

Oi Luiz tudo bom ??

Cara seus metodos me ajudaram e muito, e gostaria que você me desse um help se puderes…
Com a minha imagem já resgatada, você pode me auxiliar em como eu posso estar mostrando elas na minha pagina .jsp ???

Luiz se puderes me responder eu agradeço e muito…

Oi Luiz tudo bom ??

Cara seus metodos me ajudaram e muito, e gostaria que você me desse um help se puderes…
Com a minha imagem já resgatada, você pode me auxiliar em como eu posso estar mostrando elas na minha pagina .jsp ???

Luiz se puderes me responder eu agradeço e muito…

mas porque ele retorna ImageIcon?
tem como fazer ele retornar Image?

abraços.

[quote=rafaelchagas.sp]mas porque ele retorna ImageIcon?
tem como fazer ele retornar Image?

abraços.[/quote]

Esse tópico é de dois anos atrás. :roll:

Odeio tópico ressuscitado, mas respondendo as suas perguntas:

  1. É ImageIcon simplesmente porque o autor do código quis que fosse assim, poderia ter usado outra coisa se quisesse.

  2. Sim, tem como fazer ser Image.

[quote=victorwss][quote=rafaelchagas.sp]mas porque ele retorna ImageIcon?
tem como fazer ele retornar Image?

abraços.[/quote]

Esse tópico é de dois anos atrás. :roll:

Odeio tópico ressuscitado, mas respondendo as suas perguntas:

  1. É ImageIcon simplesmente porque o autor do código quis que fosse assim, poderia ter usado outra coisa se quisesse.

  2. Sim, tem como fazer ser Image.[/quote]

Caro amigo…

Se odeia tópicos ressucitados não os responda…

Se for pra responder assim melhor deixar que outra pessoa o faça.

A sua resposta foi tão inútil que é a mesma coisa quando a chiquinha pergunta pro seu madruga “papi pq os passaros voamm??” e ele responde " porque eles tem asas filhinha"…

Se eu perguntei se tem como fazer retornar Image é porque não sei fazer… e se procurei o fórum é pra que alguem com bons conhecimentos em java como eu acredito que você seja respondesse e explicasse como fazer.

abraços,
Rafael

[quote=rafaelchagas.sp][quote=victorwss][quote=rafaelchagas.sp]mas porque ele retorna ImageIcon?
tem como fazer ele retornar Image?

abraços.[/quote]

Esse tópico é de dois anos atrás. :roll:

Odeio tópico ressuscitado, mas respondendo as suas perguntas:

  1. É ImageIcon simplesmente porque o autor do código quis que fosse assim, poderia ter usado outra coisa se quisesse.

  2. Sim, tem como fazer ser Image.[/quote]

Caro amigo…

Se odeia tópicos ressucitados não os responda…

Se for pra responder assim melhor deixar que outra pessoa o faça.

A sua resposta foi tão inútil que é a mesma coisa quando a chiquinha pergunta pro seu madruga “papi pq os passaros voamm??” e ele responde " porque eles tem asas filhinha"…

Se eu perguntei se tem como fazer retornar Image é porque não sei fazer… e se procurei o fórum é pra que alguem com bons conhecimentos em java como eu acredito que você seja respondesse e explicasse como fazer.

abraços,
Rafael

[/quote]

Caro amigo.
Odeio tópicos ressuscitados porque em 99% das vezes seria mais conveniente abrir-se um tópico novo.

Quanto a resposta, que lhe pareceu inútil, eu quis dizer que o cara usou ImageIcon mas que poderia usar outra classe, ou seja, para usar Image ou qualquer outra coisa no lugar, basta você pegar o código dele e trocar o ImageIcon por outra coisa. Observe que o código a única amarração do código a ImageIcon é a chamada ao construtor e o tipo das variáveis, algo que pode facilmente ser substituído por outra coisa, por exemplo, BufferedImage.

Ai galera estou tendo dificuldade para trabalhar com imagens no banco de dados mysql. eu consigo inserir as imagens no banco de dados. o meu problema está sendo na hora de exibir as imagens na página jsp não sei se estou fazendo corretamente. abaixo coloco o código para fazer a exibição:

<% Connection con; Statement stmt; ResultSet rs; Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/banco","usuario","senha"); stmt = con.createStatement(); rs = stmt.executeQuery("select foto from foto"); while(rs.next()){ %> <%=rs.getBlob("foto")%> <% } %>

mais tudo o que esse código faz é exibir o caminho das imagens como vcs podem ver abaixo:
com.mysql.jdbc.Blob@1b86f3d null com.mysql.jdbc.Blob@18f2644 null com.mysql.jdbc.Blob@11976a8 com.mysql.jdbc.Blob@bd1442 com.mysql.jdbc.Blob@17d2dc0 com.mysql.jdbc.Blob@1469c17 com.mysql.jdbc.Blob@b1c033 com.mysql.jdbc.Blob@1c16924 com.mysql.jdbc.Blob@ddd1f3

será que algum de vc pode me explicar detalhadamente como exibir a imagem corretamente para que eu possa aprender.

agradeço desde já