[RESOLVIDO] Gravando imagem no banco de dados

19 respostas
A

Boa noite Galerinha!!

Tentei achar alguns exemplos na net, mas até agora nada.
Tenho uma função no programa para selecionar uma imagem pelo JFileChooser. Onde ao clicar no botão ele abre o o painel para escolher a imagem, jogando a mesma em um JLabel.
Agora quero gravar essa imagem no banco. @-@"

BOTÃO SALVAR

private void BT_SalvarMouseClicked(java.awt.event.MouseEvent evt) {                                       
        //Criando um acesso ao Bando no botão SALVAR.        
        
        if (TF_Cel.getText().trim().isEmpty()){
            try
            {
                String sqllinsert = (String) ("insert into CLIENTE (nome,cpf,idade,"
                + "codbarras,telres,presenca,foto) values (?,?,?,?,?,?,?)");
                PreparedStatement stat = con_Cadastro.conexao.prepareStatement(sqllinsert);
                stat.setString(1, TF_Nome.getText());
                stat.setString(2, TF_CPF.getText());
                stat.setInt(3, new Integer(TF_Idade.getText()));
                stat.setInt(4, new Integer(TF_Cod.getText()));
                stat.setInt(5, new Integer(TF_Res.getText()));
                stat.setString (6, new Boolean(chk_Presenca.isSelected()).toString());
                //???
                System.out.println(sqllinsert);
                stat.execute();

                JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso.");

                con_Cadastro.ExecutarSQL("select * from CLIENTE");
                TF_Pesquisa.setText(null);
                TF_Nome.setText(null);
                TF_Idade.setText(null);
                TF_CPF.setText(null);
                TF_Cod.setText(null);
                TF_Res.setText(null);
                TF_Cel.setText(null);

            }
            catch (SQLException erro)
            {
                System.out.println("Erro ao gravar registro." + erro);
            }
        }

BOTÃO DE ONDE PUXO A IMAGEM.

private void JB_FotoActionPerformed(java.awt.event.ActionEvent evt) {                                        
        //Criação do FileChooser  
        JFileChooser fileChooser = new JFileChooser();  
        fileChooser.setDialogTitle("Importar imagem");  
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
       // int a = fileChooser.showOpenDialog(null);  
  
        if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)  
        {  
            File arquivo = fileChooser.getSelectedFile();//arquivo  
            BufferedImage bi = null;
            try {
                bi = ImageIO.read(arquivo); //carrega a imagem real num buffer
            } catch (IOException ex) {
                Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
            }
            BufferedImage aux = new BufferedImage(150, 120, bi.getType());//cria um buffer auxiliar com o tamanho desejado  
            Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao  
            AffineTransform at = AffineTransform.getScaleInstance((double) 150 / bi.getWidth(), (double) 120 / bi.getHeight());//cria a transformacao  
            g.drawRenderedImage(bi, at);//pinta e transforma a imagem real no auxiliar  
            LB_Foto.setIcon(new ImageIcon(aux));//seta no jlabel
            //return;  
            //LB_Foto.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));  
        }    
//Abre a caixa para escolher a imagem

Alguma ideia de como fazer isso? :roll:

19 Respostas

I

Guardando seu caminho ou convertendo em em array de bytes, são algumas opções.

A

Pode dar algum exemplo?

I

Para salvar o caminho no banco, use por exemplo: C:\imagem.png e depois para exibir no Java busque está string no bd.

Para converter em um array de bytes :arrow: http://www.google.com.br/webhp?sourceid=chrome-instant&ix=seb&ie=UTF-8&ion=1#hl=pt-BR&output=search&sclient=psy-ab&q=converter%20imagem%20em%20bytes%20java&oq=&aq=&aqi=&aql=&gs_nf=&gs_l=&pbx=1&fp=15cf59412d73a934&ix=seb&ion=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&biw=1024&bih=621

:thumbup:

A

Obrigada anjo, vou dar uma olhadinha. ^-^

I

De nada, os link serviram para vc ter uma noção, depois caso haja alguma dúvida durante a implementação post aqui. :smiley:

P

estou com um problema na hora de setar o Jlabel com a imagem do banco, eu consigo salvar a imagem e pegar o array de bytes, porem quando eu seto o label com a a imagem convertida nao exibe a imagem, sera que algem pode me dar uma ajuda.

SELECIONA A IMAGEM:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JFileChooser fileChooser = new JFileChooser();  
        fileChooser.setDialogTitle("Importar imagem");  
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
        FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG  GIF & PNG Images", "jpg", "gif","png");  //Cria um filtro  
        fileChooser.setFileFilter(filter);  //Altera o filtro do JFileChooser
        if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)  
        {    
            img.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));    
        }
        ima = fileChooser.getSelectedFile().getPath();
        System.out.print(ima);
    }

SALVA IMAGEM NO BANCO

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String driver = "org.postgresql.Driver";  
        String user   = "postgres";  
        String senha  = "qwe123";  
        String url    = "jdbc:postgresql://10.0.0.102:5432/teste";
        
        java.sql.Connection con;      
       try  
        {  
            Class.forName(driver);  
            con = java.sql.DriverManager.getConnection(url,user ,senha);  
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();  
            throw new java.lang.RuntimeException("erro ao conectar");  
        }  
        System.out.println("Conexão realizada com sucesso.");
        
        String ciclo = this.jTextFieldCiclo.getText();  
        String corFlor = this.jTextFieldCorFlor.getText();  
        String CorHilo = this.jTextFieldCorHilo.getText();  
        String Cresc = this.jTextFieldHabtCresc.getText(); 
        String Cultivar = this.jTextFieldCultivar.getText();  
        String Manut = this.jTextFieldMaturacao.getText();  
        String Obs = this.jTextFieldObs.getText();  
        String Peso = this.jTextFieldPesoSementes.getText();
        String Porte = this.jTextFieldPorte.getText();  
        String Pub = this.jTextFieldCorPub.getText();
        byte[] byteArray;
        String comando = "insert into cultivares  (cultivar,ciclo,corflor,corhilo,cresc,manut,obs,peso,porte,pub,foto)  values(?,?,?,?,?,?,?,?,?,?,?)";
        try    
         {    
            try {
           
                    ByteArrayOutputStream bytesImg = new ByteArrayOutputStream();
                    BufferedImage imagemBuffer = ImageIO.read(new File(ima)); 
                    ImageIO.write((BufferedImage)imagemBuffer, "jpg", bytesImg);//seta a imagem para bytesImg
                    bytesImg.flush();//limpa a variável
                    byteArray = bytesImg.toByteArray();//Converte ByteArrayOutputStream para byte[] 
                    bytesImg.close();//fecha a conversão
                
            
             java.sql.PreparedStatement stmt = con.prepareStatement(comando);    
             stmt.setString(1, Cultivar);  
             stmt.setString(2, ciclo);  
             stmt.setString(3, corFlor);  
             stmt.setString(4, CorHilo);  
             stmt.setString(5, Cresc);  
             stmt.setString(6, Manut);  
             stmt.setString(7, Obs);  
             stmt.setString(8, Peso);
             stmt.setString(9, Porte);  
             stmt.setString(10,Pub);
             stmt.setBytes(11, byteArray);        
             
             System.out.println("salvo");
             
             stmt.executeUpdate();    
             stmt.close();    
             con.close();
             
             System.out.println("conexao fechada");
            
            } catch (IOException ex) {
                Logger.getLogger(Cultivares.class.getName()).log(Level.SEVERE, null, ex);
            }
         }    
                catch(java.sql.SQLException e)    
                {    
                throw new java.lang.RuntimeException(e.getMessage());    
                }    
    }

BUSCA E EXIBE A IMAGEM.

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String driver = "org.postgresql.Driver";  
        String user   = "postgres";  
        String senha  = "qwe123";  
        String url    = "jdbc:postgresql://10.0.0.102:5432/teste";
        
        java.sql.Connection con;
        try  
        {  
            Class.forName(driver);  
            con = java.sql.DriverManager.getConnection(url,user ,senha);  
            System.out.println("Conexão realizada com sucesso.");
            java.sql.Statement stm = null;
            stm = con.createStatement();
            
            String Cultivar = this.jTextFieldCultivar.getText();
            String comando =  "select * FROM cultivares where cultivar ='"+Cultivar+"'";
        
            ResultSet rs = stm.executeQuery(comando);
            
            while(rs.next())  
            {  
                // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:  
                //byteArray = null; 
                String ciclo = rs.getString("ciclo");  
                String corFlor = rs.getString("corflor");   
                String CorHilo = rs.getString("corhilo");  
                String Cresc = rs.getString("cresc");  
                String Manut = rs.getString("manut");  
                String Obs = rs.getString("obs");  
                String Peso = rs.getString("peso");
                String Porte = rs.getString("porte");  
                String Pub = rs.getString("pub");
                //byte[] imagemArray = rs.getBytes("foto");  
                //Image image = new ImageIcon(byteArray).getImage();
                Image teste = Toolkit.getDefaultToolkit().createImage(rs.getBytes("foto"));      
               
                //System.out.println("Tamanho da imagem: " + byteArray.length);  
                // System.out.println(imagemArray);       
        
                jTextFieldCiclo.setText(ciclo);
                jTextFieldCorFlor.setText(corFlor);
                jTextFieldCorHilo.setText(CorHilo);
                jTextFieldHabtCresc.setText(Cresc);
                jTextFieldMaturacao.setText(Manut);
                jTextFieldObs.setText(Obs);
                jTextFieldPesoSementes.setText(Peso);
                jTextFieldPorte.setText(Porte);
                jTextFieldCorPub.setText(Pub);
                img.setIcon(new ImageIcon(teste));
        
                //ImageIcon icon = new ImageIcon(imagemArray);  
                //img.setIcon(icon);
        }  
            } catch (ClassNotFoundException ex) {
            Logger.getLogger(Cultivares.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
                Logger.getLogger(Cultivares.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

eu ja pesquisei muito no aqui no forum, ja tentei de varias maneiras encontradas aqui porem nao consegui.

A

Que trágico, consegui salvar a imagem com a ajudinha do Henrique, consigo pesquisar.
Não mostra erro algum, mas ela simplesmente não aparece no meu jlabel. @-@"

private void BT_PesquisarMouseClicked(java.awt.event.MouseEvent evt) {                                          
        try {
            String comando = "select nome,cpf,idade,telres,telcel,foto"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  

            rs.next();
            //se for Varchar ou char usa rs.getString
            //Image img = Toolkit.getDefaultToolkit().createImage(rs.getBytes("foto"));
            BufferedImage img = ImageIO.read(new ByteArrayInputStream(rs.getBytes("foto")));  
            String nome = rs.getString("nome");   
            String cpf = rs.getString("cpf");
            int idade = rs.getInt("idade");
            int telres = rs.getInt("telres");
            int telcel = rs.getInt("telcel");
            //int codbarras = rs.getInt("codbarras");
            
            TF_Nome.setText( String.valueOf( nome));
            TF_CPF.setText( String.valueOf( cpf ) );
            TF_Idade.setText(String.valueOf(idade));
            TF_Res.setText(String.valueOf(telres));
            TF_Cel.setText(String.valueOf(telcel));
            LB_Foto.setIcon(new ImageIcon(img));
            //TF_Cod.setText(String.valueOf(codbarras));
            
            } catch (SQLException e){  
            JOptionPane.showMessageDialog(null, "Cliente não encontrado!");  
            e.printStackTrace();  
            } catch (Exception e){  
            e.printStackTrace();  
            } 
    }

A imagem fica salva no banco de dados como [datatype]
Vamos lá.. joguinho dos sete erros... alguém consegue achar porque não vai? xD

P

estou o mesmo problema, to usando o postegres e a coluna de imagens com bytea…

A

Uma bala para quem resolver. o/ (indo dormir… a bala fica para amanhã =x)

E

Alix,
Tenta o meu exemplo… para recuperar a img do banco…
Vai funcionar…

vlw :smiley:

http://www.guj.com.br/java/68520-como-inserir-imagem-no-banco-de-dados-usando-jsp

A

Ainda não consegui resolver… trágico. =/

I

Oi, acabei de ver sua mp, lamento por não poder ajudar de imediato (tbm não achei o erro), vou fazer uns teste e qlq coisa eu posto.

:thumbup:

A

Obrigada. -

A

Depois de muito olhar por ae. (Viva o google.. lol)
Vi um teco ali e aqui.. olhei o código do nosso amiguinho que teve o mesmo problema. E consegui resolver o problema para salvar a foto.

O botão para carregar a imagem ficou assim:
private void JB_FotoMouseClicked(java.awt.event.MouseEvent evt) {
        //Criação do FileChooser  
        JFileChooser fileChooser = new JFileChooser();  
        fileChooser.setDialogTitle("Importar imagem");  
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
       // int a = fileChooser.showOpenDialog(null);  
  
        if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)  
        {  
            File arquivo = fileChooser.getSelectedFile();//arquivo  
            BufferedImage imagem = null;
            try {
                imagem = ImageIO.read(arquivo); //carrega a imagem real num buffer
            } catch (IOException ex) {
                Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
            }
            BufferedImage aux = new BufferedImage(150, 120, imagem.getType());//cria um buffer auxiliar com o tamanho desejado  
            Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao  
            AffineTransform at = AffineTransform.getScaleInstance((double) 150 / imagem.getWidth(), (double) 120 / imagem.getHeight());//cria a transformacao  
            g.drawRenderedImage(imagem, at);//pinta e transforma a imagem real no auxiliar  
            LB_Foto.setIcon(new ImageIcon(aux));//seta no jlabel
            
            
            //LB_Foto.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));
            local = fileChooser.getSelectedFile().getPath();  
   
          }
           
//Abre a caixa para escolher a imagem
    }
Ps: Caso alguém use o cod. futuramente.. Minha imagem foi redimensionada para o tam 150 / 120 (seria o tamanho do meu Jlabel no caso .. para a foto caber bonitinha nele..)

GRAVANDO A IMAGEM NO BANCO

try {
            //Converte a imagem em bytes para guardar no banco
            ByteArrayOutputStream bytesImg = new ByteArrayOutputStream();  
            BufferedImage imagemBuffer = ImageIO.read(new File(local));
            ImageIO.write((BufferedImage)imagemBuffer, "jpg", bytesImg);//seta a imagem para bytesImg  
            bytesImg.flush();//limpa a variável  
            byte[] bytes = bytesImg.toByteArray();//Converte ByteArrayOutputStream para byte[]   
            bytesImg.close();//fecha a conversão
            
            if (TF_Cel.getText().trim().isEmpty()){
                try
                {
                    String sqllinsert = (String) ("insert into CLIENTE (nome,cpf,idade,"
                    + "codbarras,telres,presenca,foto) values (?,?,?,?,?,?,?)");
                    PreparedStatement stat = con_Cadastro.conexao.prepareStatement(sqllinsert);
                    stat.setString(1, TF_Nome.getText());
                    stat.setString(2, TF_CPF.getText());
                    stat.setInt(3, new Integer(TF_Idade.getText()));
                    stat.setInt(4, new Integer(TF_Cod.getText()));
                    stat.setInt(5, new Integer(TF_Res.getText()));
                    stat.setString (6, new Boolean(chk_Presenca.isSelected()).toString());
                    stat.setBytes(7, bytes);
                    System.out.println(sqllinsert);
                    stat.execute();

                    JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso.");

                    con_Cadastro.ExecutarSQL("select * from CLIENTE");
                    TF_Pesquisa.setText(null);
                    TF_Nome.setText(null);
                    TF_Idade.setText(null);
                    TF_CPF.setText(null);
                    TF_Cod.setText(null);
                    TF_Res.setText(null);
                    TF_Cel.setText(null);
                    LB_Foto.setIcon(null);
                    chk_Presenca.enable(false);                

                }
                catch (SQLException erro)
                {
                    System.out.println("Erro ao gravar registro." + erro);
                }
            }
catch (IOException ex) {
            Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
        }

BUSCANDO DADOS

private void BT_PesquisarMouseClicked(java.awt.event.MouseEvent evt) {                                          
        try {
            String comando = "select nome,cpf,idade,telres,telcel,foto"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  

            rs.next();
            //se for Varchar ou char usa rs.getString
            //Image img = Toolkit.getDefaultToolkit().createImage(rs.getBytes("foto"));
            BufferedImage img = ImageIO.read(new ByteArrayInputStream(rs.getBytes("foto")));
            String nome = rs.getString("nome");   
            String cpf = rs.getString("cpf");
            int idade = rs.getInt("idade");
            int telres = rs.getInt("telres");
            int telcel = rs.getInt("telcel");
            //int codbarras = rs.getInt("codbarras");
            
 
            
            TF_Nome.setText( String.valueOf( nome));
            TF_CPF.setText( String.valueOf( cpf ) );
            TF_Idade.setText(String.valueOf(idade));
            TF_Res.setText(String.valueOf(telres));
            TF_Cel.setText(String.valueOf(telcel));
            //Converte o tamanho da imagem e mostra no jLabel
            BufferedImage aux = new BufferedImage(150, 120, img.getType());//cria um buffer auxiliar com o tamanho desejado  
            Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao  
            AffineTransform at = AffineTransform.getScaleInstance((double) 150 / img.getWidth(), (double) 120 / img.getHeight());//cria a transformacao  
            g.drawRenderedImage(img, at);//pinta e transforma a imagem real no auxiliar  
            LB_Foto.setIcon(new ImageIcon(aux));
            //TF_Cod.setText(String.valueOf(codbarras));
            
            } catch (SQLException e){  
            JOptionPane.showMessageDialog(null, "Cliente não encontrado!");  
            e.printStackTrace();  
            } catch (Exception e){  
            e.printStackTrace();  
            } 
    }

Na hora de puxar a imagem de volta... redimensionei a imagem novamente para que ela não volte no tamanho original, pois quando ela é salva no banco vai com o tamanho original. =)

Meu código não está perfeito, mas já é alguma coisinha. kkkkkk'
Obrigada a todos que me deram um help e tentaram me ajudar.
Beijinhos e até a próxima pessoal. ;*

L

Oi, Tudo Bem??
Gostaria de pedir uma ajuda
A variavel local q está em negrito foi declarada onde??

view plaincopy to clipboardprint?

private void JB_FotoMouseClicked(java.awt.event.MouseEvent evt) {

//Criação do FileChooser

JFileChooser fileChooser = new JFileChooser();

fileChooser.setDialogTitle(Importar imagem);

fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

// int a = fileChooser.showOpenDialog(null);
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)    
    {    
        File arquivo = fileChooser.getSelectedFile();//arquivo    
        BufferedImage imagem = null;  
        try {  
            imagem = ImageIO.read(arquivo); //carrega a imagem real num buffer  
        } catch (IOException ex) {  
            Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);  
        }  
        BufferedImage aux = new BufferedImage(150, 120, imagem.getType());//cria um buffer auxiliar com o tamanho desejado    
        Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao    
        AffineTransform at = AffineTransform.getScaleInstance((double) 150 / imagem.getWidth(), (double) 120 / imagem.getHeight());//cria a transformacao    
        g.drawRenderedImage(imagem, at);//pinta e transforma a imagem real no auxiliar    
        LB_Foto.setIcon(new ImageIcon(aux));//seta no jlabel  
          
          
        //LB_Foto.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));  
        [b]local [/b]= fileChooser.getSelectedFile().getPath();    
 
      }

//Abre a caixa para escolher a imagem
}

Desde já obrigado, desculpe por alguma coisa

J

Alix : estou adaptando o teu codigo para implementar no meu projecto, gostava de saber o teu local = fileChooser.getSelectedFile().getPath(); se refere a oque para eu adaptar no meu codico

W

no botão GRAVANDO A IMAGEM NO BANCO o que significa aquela variavel LOCAL, pois eu não consigo salvar no banco a imagem que eu carreguei no jlabel como eu faço isso?

W
Alix:
Depois de muito olhar por ae. (Viva o google.. lol) Vi um teco ali e aqui.. olhei o código do nosso amiguinho que teve o mesmo problema. E consegui resolver o problema para salvar a foto. O botão para carregar a imagem ficou assim:
private void JB_FotoMouseClicked(java.awt.event.MouseEvent evt) {
        //Criação do FileChooser  
        JFileChooser fileChooser = new JFileChooser();  
        fileChooser.setDialogTitle("Importar imagem");  
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
       // int a = fileChooser.showOpenDialog(null);  
  
        if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)  
        {  
            File arquivo = fileChooser.getSelectedFile();//arquivo  
            BufferedImage imagem = null;
            try {
                imagem = ImageIO.read(arquivo); //carrega a imagem real num buffer
            } catch (IOException ex) {
                Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
            }
            BufferedImage aux = new BufferedImage(150, 120, imagem.getType());//cria um buffer auxiliar com o tamanho desejado  
            Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao  
            AffineTransform at = AffineTransform.getScaleInstance((double) 150 / imagem.getWidth(), (double) 120 / imagem.getHeight());//cria a transformacao  
            g.drawRenderedImage(imagem, at);//pinta e transforma a imagem real no auxiliar  
            LB_Foto.setIcon(new ImageIcon(aux));//seta no jlabel
            
            
            //LB_Foto.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));
            local = fileChooser.getSelectedFile().getPath();  
   
          }
           
//Abre a caixa para escolher a imagem
    }
Ps: Caso alguém use o cod. futuramente.. Minha imagem foi redimensionada para o tam 150 / 120 (seria o tamanho do meu Jlabel no caso .. para a foto caber bonitinha nele..)

GRAVANDO A IMAGEM NO BANCO

try {
            //Converte a imagem em bytes para guardar no banco
            ByteArrayOutputStream bytesImg = new ByteArrayOutputStream();  
            BufferedImage imagemBuffer = ImageIO.read(new File(local));
            ImageIO.write((BufferedImage)imagemBuffer, "jpg", bytesImg);//seta a imagem para bytesImg  
            bytesImg.flush();//limpa a variável  
            byte[] bytes = bytesImg.toByteArray();//Converte ByteArrayOutputStream para byte[]   
            bytesImg.close();//fecha a conversão
            
            if (TF_Cel.getText().trim().isEmpty()){
                try
                {
                    String sqllinsert = (String) ("insert into CLIENTE (nome,cpf,idade,"
                    + "codbarras,telres,presenca,foto) values (?,?,?,?,?,?,?)");
                    PreparedStatement stat = con_Cadastro.conexao.prepareStatement(sqllinsert);
                    stat.setString(1, TF_Nome.getText());
                    stat.setString(2, TF_CPF.getText());
                    stat.setInt(3, new Integer(TF_Idade.getText()));
                    stat.setInt(4, new Integer(TF_Cod.getText()));
                    stat.setInt(5, new Integer(TF_Res.getText()));
                    stat.setString (6, new Boolean(chk_Presenca.isSelected()).toString());
                    stat.setBytes(7, bytes);
                    System.out.println(sqllinsert);
                    stat.execute();

                    JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso.");

                    con_Cadastro.ExecutarSQL("select * from CLIENTE");
                    TF_Pesquisa.setText(null);
                    TF_Nome.setText(null);
                    TF_Idade.setText(null);
                    TF_CPF.setText(null);
                    TF_Cod.setText(null);
                    TF_Res.setText(null);
                    TF_Cel.setText(null);
                    LB_Foto.setIcon(null);
                    chk_Presenca.enable(false);                

                }
                catch (SQLException erro)
                {
                    System.out.println("Erro ao gravar registro." + erro);
                }
            }
catch (IOException ex) {
            Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
        }

BUSCANDO DADOS

private void BT_PesquisarMouseClicked(java.awt.event.MouseEvent evt) {                                          
        try {
            String comando = "select nome,cpf,idade,telres,telcel,foto"
                  + " FROM cliente WHERE cpf ='" +TF_Pesquisa.getText()+ "'";  
            PreparedStatement prep = con_Cadastro.conexao.prepareStatement(comando);  
            //esse retornaConexao está tratando da conexão com o bd.  
            ResultSet rs = prep.executeQuery();  

            rs.next();
            //se for Varchar ou char usa rs.getString
            //Image img = Toolkit.getDefaultToolkit().createImage(rs.getBytes("foto"));
            BufferedImage img = ImageIO.read(new ByteArrayInputStream(rs.getBytes("foto")));
            String nome = rs.getString("nome");   
            String cpf = rs.getString("cpf");
            int idade = rs.getInt("idade");
            int telres = rs.getInt("telres");
            int telcel = rs.getInt("telcel");
            //int codbarras = rs.getInt("codbarras");
            
 
            
            TF_Nome.setText( String.valueOf( nome));
            TF_CPF.setText( String.valueOf( cpf ) );
            TF_Idade.setText(String.valueOf(idade));
            TF_Res.setText(String.valueOf(telres));
            TF_Cel.setText(String.valueOf(telcel));
            //Converte o tamanho da imagem e mostra no jLabel
            BufferedImage aux = new BufferedImage(150, 120, img.getType());//cria um buffer auxiliar com o tamanho desejado  
            Graphics2D g = aux.createGraphics();//pega a classe graphics do aux para edicao  
            AffineTransform at = AffineTransform.getScaleInstance((double) 150 / img.getWidth(), (double) 120 / img.getHeight());//cria a transformacao  
            g.drawRenderedImage(img, at);//pinta e transforma a imagem real no auxiliar  
            LB_Foto.setIcon(new ImageIcon(aux));
            //TF_Cod.setText(String.valueOf(codbarras));
            
            } catch (SQLException e){  
            JOptionPane.showMessageDialog(null, "Cliente não encontrado!");  
            e.printStackTrace();  
            } catch (Exception e){  
            e.printStackTrace();  
            } 
    }

Na hora de puxar a imagem de volta... redimensionei a imagem novamente para que ela não volte no tamanho original, pois quando ela é salva no banco vai com o tamanho original. =)

Meu código não está perfeito, mas já é alguma coisinha. kkkkkk'
Obrigada a todos que me deram um help e tentaram me ajudar.
Beijinhos e até a próxima pessoal. ;*

no botão GRAVANDO A IMAGEM NO BANCO o que significa aquela variavel LOCAL, pois eu não consigo salvar no banco a imagem que eu carreguei no jlabel como eu faço isso?
BufferedImage imagemBuffer = ImageIO.read(new File([color=red]local[/color]));

G
Fiquei curioso nessa linha: local :
local= fileChooser.getSelectedFile().getPath();

Onde e o que é esse objeto local que você atribui?
Você pode me responder desde, já agradeço.

Criado 28 de abril de 2012
Ultima resposta 5 de nov. de 2014
Respostas 19
Participantes 8