Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Imagenes MySQL

Buenas compañeros...

Veran, estoy en un proyecto escolar de un sistema para gestion del personal de un empresa. Ya tengo la BD armada y las ventanas tambien. Ya hace "SELECT, UPDATE, DELETE" con los datos pero no he podido hacer que guarde las imagenes en la BD. He estado viendo un monton de tutos pero no he podido (Distan mucho de lo que yo tengo y como soy nuevo en Java me confundo mas jeje)

Les agrego parte de mi codigo, a ver si ayuda un poco:
Boton Guardar (Este boton guardaria todos los datos junto con la foto en la BD)

int num_empleado = Integer.parseInt(txtNumEmpleado.getText());
String ap_paterno = txtApellidoPaterno.getText();
String ap_materno = txtApellidoMaterno.getText();
String nombre = txtNombre.getText();
String estado_civil = (String) cmbEstadoCivil.getSelectedItem();
String direccion = txtDireccion.getText();
String telefono = txtTelefono.getText();
String fecha_nac = txtFechaNac.getText();
String area = txtArea.getText();
int salario = Integer.parseInt(txtSalario.getText());
String inicio_contrato = txtInicioContrato.getText();
String venc_contrato = txtVencimientoContrato.getText();


if(crud.insert(num_empleado, ap_paterno, ap_materno,
nombre, estado_civil, direccion, telefono,
fecha_nac, area, salario, inicio_contrato, venc_contrato)){
JOptionPane.showMessageDialog(this, "Personal registrado con exito.", "Añadir personal", JOptionPane.INFORMATION_MESSAGE);
LimpiarTodo();
}else{
JOptionPane.showMessageDialog(this, "Error al registrar los datos.", "Añadir personal", JOptionPane.ERROR_MESSAGE);
}

y con este otro hice el cuadro de dialogo para cargar la imagen en un label con un boton:
lblfoto.setIcon(null);
FileNameExtensionFilter filtro = new FileNameExtensionFilter("Formatos de Archivos JPEG(*.JPG;*.JPEG)", "jpg", "jpeg");
JFileChooser j = new JFileChooser();
j.addChoosableFileFilter(filtro);
j.setFileSelectionMode(JFileChooser.FILES_ONLY);//solo archivos y no carpetas
int estado=j.showOpenDialog(null);
if(estado== JFileChooser.APPROVE_OPTION){
try{
fis = new FileInputStream(j.getSelectedFile());
//necesitamos saber la cantidad de bytes
this.longitudBytes=(int)j.getSelectedFile().length();
try {
Image icono=ImageIO.read(j.getSelectedFile()).getScaledInstance
(lblfoto.getWidth(),lblfoto.getHeight(),Image.SCALE_DEFAULT);
lblfoto.setIcon(new ImageIcon(icono));
lblfoto.updateUI();

} catch (IOException ex) {
JOptionPane.showMessageDialog(rootPane, "imagen: "+ex);
}
}catch(FileNotFoundException ex){
ex.printStackTrace();
}
}

Tambien tengo este fragmento de codigo de un proyecto que descargue pero no se como combinarlo con el que ya tengo para que funcione:

try{
String sql="INSERT INTO \"Persona\"(codigo, nombre, foto) VALUES (?, ?, ?)";

PreparedStatement ps=con.getConexion().prepareStatement(sql);
ps.setInt(1,Integer.parseInt(txtcodigo.getText()));
ps.setString(2,txtnombre.getText());
ps.setBinaryStream(3,fis,longitudBytes);

ps.execute();
ps.close();

lblfoto.setIcon(null);
txtcodigo.setText("");
txtnombre.setText("");

JOptionPane.showMessageDialog(rootPane,"Guardado correctamente");
}catch(SQLException | NumberFormatException | HeadlessException x){
JOptionPane.showMessageDialog(rootPane, "exception 2 "+x);
}

Les agradeceria que algun alma caritativa me ayudara.
De antemano, gracias.

noviembre 7, 2016 | Registered Commenterfrankh93

Hola, pues lo tienes echo.... simplemente a tu método crud.insert(...), ponle un parámetro mas de tipo Image, en la llamada, le pasas la imagen indicada y en el código de ese método, habrá que ver como lo tienes... si con statment o preparedStatment, y según como lo tengas tendrás que arreglarlo, para usar un preparedstatment tal y como el ejemplo que pones de persona.

Si no sabes o no te sale, pon aqui el codigo de crud.insert(...) y entonces te echo una mano para arreglarlo. Bueno un saludo.

noviembre 8, 2016 | Registered Commenterloderain