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:
Código:
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:
Código:
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 baje pero no se como combinarlo con el que ya tengo para que funcione:
Código:
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);
}
De antemano, gracias.