Oi gente !
Tenho um projeto à fazer e não estou conseguindo cadastrar informações como nome, endereço, etc + 1 imagem.
Quero que o cadastro seja feito mesmo sem a imagem, pois pode não estar disponível a imagem (foto) no momento do cadastro.
Se alguém puder me ajudar agradeço.
T’+…
Código abaixo, as linhas principais:
classe JanelaNovoContato:
variável global:
BufferedImage imagem;
.
.
.
clicando no botão gravar:
private void gravarActionPerformed(java.awt.event.ActionEvent evt) {
try {
Exemplo obj = new Exemplo();
obj.setNome(this.nome.getText());
obj.setEndereco(this.endereco.getText());
obj.setEmail(this.email.getText());
if(imagem == null){
System.out.println("obj.setImagem = NULL !!!!");
imagem = ImageIO.read(JanelaNovoContato.class.getResource("../imagem/semFoto.png"));
}
obj.setImagem(ManipularImagem.getImgBytes(imagem));
ExemploDAO dao = new ExemploDAO();
Boolean foi = dao.inserir(obj);
if(foi == true)
{
JOptionPane.showMessageDialog(rootPane, "Dados cadastrados com sucesso");
}
else
{
JOptionPane.showMessageDialog(rootPane, "Dados não cadastrados");
}
this.dispose();
} catch (Exception ex) {
Logger.getLogger(JanelaNovoContato.class.getName()).log(Level.SEVERE, null, ex);
}
}
outro botão:
private void enviarImagemActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fc = new JFileChooser();
int res = fc.showOpenDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
File arquivo = fc.getSelectedFile();
try {
imagem = ManipularImagem.setImagemDimensao(arquivo.getAbsolutePath(), 200, 230);
lblImagem.setIcon(new ImageIcon(imagem));
} catch (Exception ex) {
// System.out.println(ex.printStackTrace().toString());
}
} else {
JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo.");
}
}
=====================
método da classe DAO:
public Boolean inserir(Exemplo exemplo) throws SQLException
{
Boolean retorno = false;
String sql = “INSERT INTO contatos (nome, endereco, email, data, imagem) values (?, ?, ?, ?, ?)”;
PreparedStatement pst = Conexao.getPreparedStatement(sql);
try
{
pst.setString(1, exemplo.getNome());
pst.setString(2, exemplo.getEndereco());
pst.setString(3, exemplo.getEmail());
pst.setString(4, exemplo.getData());
pst.setBytes(5, exemplo.getImagem());
pst.executeUpdate();
retorno = true;
}
catch(Exception ex)
{
ex.printStackTrace();
}
return retorno;
}
método da classe ManipularImagem:
public static byte[] getImgBytes(BufferedImage image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ImageIO.write(image, “JPG”, baos);
} catch (IOException ex) {
//handle it here… not implemented yet…
}
InputStream is = new ByteArrayInputStream(baos.toByteArray());
return baos.toByteArray();
}
//Novo método para exibir imagem na tela
//Recebe o label que queremos exibir E a imagem como array de bytes do banco
public static void exibiImagemLabel(byte[] minhaimagem, javax.swing.JLabel label)
{
//primeiro verifica se tem a imagem
//se tem convert para inputstream que é o formato reconhecido pelo ImageIO
if(minhaimagem!=null)
{
InputStream input = new ByteArrayInputStream(minhaimagem);
try {
BufferedImage imagem = ImageIO.read(input);
label.setIcon(new ImageIcon(imagem));
} catch (IOException ex) {
}
}
else
{
label.setIcon(null);
}
}
classe Exemplo:
public class Exemplo {
private int id;
private byte[] imagem;
private String nome;
.
.
.
public byte[] getImagem() {
return imagem;
}
/**
* @param imagem the imagem to set
*/
public void setImagem(byte[] imagem) {
this.imagem = imagem;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}