Inserir imagem na base de dados

0 respostas
RJLP

Boas tardes

Vinha perguntar-vos como posso enviar uma imagem para a Base de Dados.
A imagem é carregada através de uma JFileChooser e colocada num Label. O caminho da imagem consigo enviar sem problema para a BD, mas a imagem mesmo, já tentei e não consegui.

Junto envio o código da Inserção da Imagem:

JFileChooser jf = new JFileChooser();
   jf.setFileFilter(getFilter());
   jf.setMultiSelectionEnabled(false);
   jf.setFileHidingEnabled(true);  
   jf.setAccessory(new ImagePreview(jf));
   UIManager.put("FileChooser.openDialogTitleText", "Abrir");
   UIManager.put("FileChooser.lookInLabelText", "Consultar em");
   UIManager.put("FileChooser.openButtonText", "Abrir");
   UIManager.put("FileChooser.cancelButtonText", "Cancelar");
   UIManager.put("FileChooser.fileNameLabelText", "Nome do Ficheiro");
   UIManager.put("FileChooser.filesOfTypeLabelText", "Tipo de Ficheiro");
   UIManager.put("FileChooser.openButtonToolTipText", "Abrir o Ficheiro Selecionado");
   UIManager.put("FileChooser.cancelButtonToolTipText","Cancelar");
   UIManager.put("FileChooser.fileNameHeaderText","Nome");
   UIManager.put("FileChooser.upFolderToolTipText", "Subir um Nível");
   UIManager.put("FileChooser.homeFolderToolTipText","Área de Trabalho");
   UIManager.put("FileChooser.newFolderToolTipText","Criar Nova Pasta");
   UIManager.put("FileChooser.listViewButtonToolTipText","Lista");
   UIManager.put("FileChooser.newFolderButtonText","Criar Nova Pasta");
   UIManager.put("FileChooser.renameFileButtonText", "Renomear");
   UIManager.put("FileChooser.deleteFileButtonText", "Eliminar");
   UIManager.put("FileChooser.filterLabelText", "Tipo");
   UIManager.put("FileChooser.detailsViewButtonToolTipText", "Detalhes");
   UIManager.put("FileChooser.fileSizeHeaderText","Tamanho");
   UIManager.put("FileChooser.fileDateHeaderText", "Data de Modificação");
   UIManager.put("FileChooser.acceptAllFileFilterText", "Todos os Ficheiros");
   SwingUtilities.updateComponentTreeUI(jf);
   int escolha = jf.showOpenDialog(this);
   if(escolha == JFileChooser.APPROVE_OPTION){
       DataInputStream is = null;
       this.jTextArea1.append(jf.getSelectedFile().getName());
       File ImagemArquivo = jf.getSelectedFile();  
       String Path = ImagemArquivo.getPath();  
       File arq = jf.getSelectedFile();  
       File f = new File(arq.toString());
       String path = arq.toString();  
       Image Img = Toolkit.getDefaultToolkit().getImage(Path);
       lbimagem.setIcon(new ImageIcon(Img.getScaledInstance(lbimagem.getWidth(),lbimagem.getHeight(), Image.SCALE_DEFAULT)));
       Image image = ((ImageIcon)lbimagem.getIcon()).getImage();
       jLabel5.setVisible(true);
       jLabel6.setVisible(true);
       jLabel7.setVisible(true);
       
       this.requestFocus();
       
       
   }else{
    JOptionPane.showMessageDialog(this, "A seleção de imagem foi cancelada!", "Atenção!", JOptionPane.WARNING_MESSAGE);
}



}                                               



private FileFilter getFilter() {  
    FileFilter ff = new FileFilter() {  
  
        public boolean accept(File f) {  
            if (f.isDirectory()) {  
                return true;  
            }  
  
            String extension = getExtension(f);  
            if (extension != null) {  
                if (extension.equals(".gif")  
                        || extension.equals(".jpg")  
                        || extension.equals(".jpeg")  
                        || extension.equals(".png")) {  
                    return true;  
                } else {  
                    return false;  
                }  
            }  
            return false;  
        }  
  
        private String getExtension(File f) {  
            String ext = null;  
            String s = f.getName();  
            int i = s.lastIndexOf('.');  
  
            if (i > 0 && i < s.length() - 1) {  
                ext = s.substring(i).toLowerCase();  
            }  
            return ext;  
        }  
  
        @Override  
        public String getDescription() {  
            return "Arquivos de Imagens (.gif, .jpg, .jpeg, .png)";  
        }  
    };  
  
    return ff;  
}

E código de inserção dos dados desta janela na BD:

private boolean InserirNoticias(){

    String sql ="INSERT INTO noticia (titulo, categoria, "
            + " mensagem, imagem) VALUES (' "
            + this.tftitulo.getText() + "'"
            + ", '" + this.cbcategoria.getSelectedItem() + "' "
            + ", '" + this.tamensagem.getText() + "' "
            + ", '" + this.jTextArea1.getText() + "') ";
    
    
    System.out.println(sql);
    
    try {
        int nr = instrucao.executeUpdate(sql);
        if(nr > 0){
            JOptionPane.showMessageDialog(this, "A notícia com o título " +tftitulo.getText()+ " foi inserido com sucesso!");
            return true;
        }
    }catch(SQLException ex){
        JOptionPane.showMessageDialog(this,
                "ERRO: Não foi possível estabelecer ligação com a base de dados"
                + ex.getMessage());
    }
    return false;

}

Nota: Aqui a imagem está a enviar o caminho da imagem, como já referi anteriormente queria enviar mesmo a imagem, e não estou a conseguir, espero por ajuda, obrigado ;)

Criado 14 de maio de 2013
Respostas 0
Participantes 1