+1 voto
por (30 puntos) en Java
Hola, buen día.

Tengo una aplicación donde tengo varios jtxt y 4 botones, donde uno de los botones funciona para obtener una imagen y mostrarla en el mismo botón, otro botón me guarda el registro, otro lo borra y otro cierra la aplicación.

Como puedo hacer para que la imagen que obtuve mediante jfilechooser y asigne al botón almacenarla en la base de datos junto con los demás datos de la persona?

1 Respuesta

0 votos
por (5.4k puntos)

Puedes guardar la imagen en Base64 dentro de la base de datos.

File file = new File(fileName);
byte[] bytes = loadFile(file);
byte[] encoded = Base64.encodeBase64(bytes);
String encodedString = new String(encoded);

Si compartes tu código podemos ver cómo lo haces.

Saludos.

por (30 puntos)
Con este asigno la foto a un botón

int resultado;
        CargarFoto ventana = new CargarFoto();
        FileNameExtensionFilter filtro = new FileNameExtensionFilter("JPG y PNG","jpg","png");
        ventana.jfchCargarfoto.setFileFilter(filtro);
        resultado= ventana.jfchCargarfoto.showOpenDialog(null);
        if (JFileChooser.APPROVE_OPTION == resultado){
            fichero = ventana.jfchCargarfoto.getSelectedFile();
            try{
                ImageIcon icon = new ImageIcon(fichero.toString());
                Icon icono = new ImageIcon(icon.getImage().getScaledInstance(imagen.getWidth(), imagen.getHeight(), Image.SCALE_DEFAULT));
                imagen.setText(null);            
                imagen.setIcon( icono );
            }catch(Exception ex){          
                JOptionPane.showMessageDialog(null, "Error abriendo la imagen "+ ex);
            }
        }

y con esto hago el registro

try{
            // Establecemos la conexión con la base de datos.
            Class.forName("com.mysql.jdbc.Driver");
            Connection conexion = DriverManager.getConnection(url, user, pass);
            String nombre=jtxtnombre.getText();
            String apellido=jtxtapellido.getText();
            String direccion=jtxtdireccion.getText();
            String telefono=jtxttelefono.getText();
            String curp=jtxtcurp.getText();
            String sexo=jcmbsexo.getSelectedItem().toString();
            //File image=(File) imagen.getIcon();
            int edad=Integer.parseInt(jtxtedad.getText());
            Statement st = conexion.createStatement();
            st.executeUpdate("INSERT INTO persona (curp, nombre, apellido, direccion, telefono,  sexo, edad, imagen) VALUES ('" +curp+ "','" +nombre+ "','" +apellido+ "','" +direccion+ "','" +telefono+ "','" +sexo+ "','" +edad+ "','"/*+image+"'"*/);
            JOptionPane.showMessageDialog(null, "Se ha registrado con éxito");
            jtxtnombre.setText("");
            jtxtapellido.setText("");
            jtxtdireccion.setText("");
            jtxttelefono.setText("");
            jtxtcurp.setText("");
            jtxtedad.setText("");
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Verifica tu información");
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, ex+"Error al conectar, contacta al administrador");
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, e);
        }

Pero no se donde debería poner ese código que me comentas, me confundí

Preguntas relacionadas

0 votos
0 respuestas
0 votos
1 respuesta
preguntado por Rider1996 (20 puntos) Abr 11, 2016 en IDE
0 votos
1 respuesta
preguntado por gowLuis (20 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...