Autor Tema: Java SELECT, UPDATE, DELETE con base de datos MySql ¿cómo guardar imágenes?  (Leído 3253 veces)

frankh93

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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:
Código: [Seleccionar]
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: [Seleccionar]
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: [Seleccionar]
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.
« Última modificación: 13 de Noviembre 2016, 12:58 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas frankh93

En una base de datos no se suelen guardar las imágenes como tal. Las imágenes se suelen guardar en archivos dentro de un sistema de directorios, y lo que guardas en la base de datos es la ruta que te permite acceder a las imágenes. De ese modo cada vez que tengas que usar una imagen recuperas la ruta y la muestras. No sé si te refieres a eso o a otra cosa.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".