Título: Ayuda, mostrar imagen almacenada en mysql y mostrarla en un jlabel Publicado por: junca15 en 1 Octubre 2015, 17:36 pm Hola amigos, recien estoy empezando en java y me propuse a realizar una base de datos java y myql, pero resulta que me quede en un punto que no se como sulucionar he buscado en foros y videos pero no encuentro la solucion o el error.
es una pequeña aplicacion que registra un producto, y cada vez que registro un producto lo guarda en la base de datos y me muestra en un jtable los datos almacenados en dicha base de datos, en el jtable puedo seleacionar la fila y con clic derecho mostrar en los jtextfiel pero no logro mostrar la foto en un jlabel. acudo a sus ayudas y colaboracion, gracias. anexo proyecto - base de datos. por favor si se tienen mejoras con mucho gusto son recibidas, estoy con las ganas de aprender. import clases.conectar; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.File; import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import static javax.print.attribute.Size2DSyntax.MM; import javax.swing.table.DefaultTableModel; import java.util.Date; import java.text.ParseException; import javax.swing.*; import javax.swing.filechooser.FileFilter; /** * * @author icore */ public class form_internal_productos extends javax.swing.JInternalFrame { /** * Creates new form form_internal_productos */ public form_internal_productos() { initComponents(); mostrardatos(""); //ESTE CODIGO ES PARA EL JCOMBOBOX PARA VER LO QUE ESTA EN LA TABLA PROVEDOR try { conectar con = new conectar(); Connection reg = con.conexion(); t_nombreprovedor.removeAllItems(); String sql=""; sql="SELECT * FROM provedor"; Statement st = reg.createStatement(); ResultSet rs = st.executeQuery(sql); while(rs.next()){ t_nombreprovedor.addItem(rs.getString("nombreprovedor")); } } catch (SQLException ex) { Logger.getLogger(form_internal_productos.class.getName()).log(Level.SEVERE, null, ex); } } File fichero; void mostrardatos (String valor) { DefaultTableModel modelo = new DefaultTableModel(); modelo.addColumn("Serial"); modelo.addColumn("Placa"); modelo.addColumn("Tipo"); modelo.addColumn("Marca"); modelo.addColumn("Descripcion"); modelo.addColumn("Cantidad"); modelo.addColumn("Fecha Compra"); modelo.addColumn("Agencia"); modelo.addColumn("Imagen"); tb_producto.setModel(modelo); //aqui es el codigo para la consulta del boton buscar String sql=""; if(valor.equals("")) { sql="SELECT * FROM producto"; } else { sql="SELECT * FROM producto WHERE serialproducto='"+valor+"'"; } String []datos = new String [9]; try { Statement st = reg.createStatement(); ResultSet rs = st.executeQuery(sql); while(rs.next()){ datos[0]=rs.getString("serialproducto"); datos[1]=rs.getString("placaproducto"); datos[2]=rs.getString("tipoproducto"); datos[3]=rs.getString("marcaproducto"); datos[4]=rs.getString("descripcionproducto"); datos[5]=rs.getString("cantidadproducto"); datos[6]=rs.getString("fechaproducto"); datos[7]=rs.getString("nombreprovedor"); ByteArrayOutputStream ouput = new ByteArrayOutputStream(); InputStream isdatos = rs.getBinaryStream("fotoproducto"); int temp=isdatos.read(); while(temp>=0) { ouput.write((char)temp); temp=isdatos.read(); } Image imagen=Toolkit.getDefaultToolkit().createImage(ouput.toByteArray()); imagen=imagen.getScaledInstance(110, 120, 1); lblfoto.setIcon(new ImageIcon(imagen)); // datos[8]=rs.getString("fotoproducto"); //String cod = t_imagenproducto.getText(); //agregar la fila modelo.addRow(datos); } } catch (SQLException ex) { Logger.getLogger(form_internal_provedor.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(form_internal_productos.class.getName()).log(Level.SEVERE, null, ex); } } private void btnselecionarActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser archivo = new JFileChooser(); archivo.setAcceptAllFileFilterUsed(false); FileFilter Filtro1 = new FileNameExtensionFilter("JPG file","jpg"); FileFilter Filtro2 = new FileNameExtensionFilter("PNG file","png"); archivo.setFileFilter(Filtro1); archivo.addChoosableFileFilter(Filtro2); archivo.setDialogTitle("Abrir Archivo"); File ruta = new File("D:/productos"); archivo.setCurrentDirectory(ruta); int ventana = archivo.showOpenDialog(null); if(ventana == JFileChooser.APPROVE_OPTION) { File file = archivo.getSelectedFile(); t_imagenproducto.setText(String.valueOf(file)); Image foto = getToolkit().getImage(t_imagenproducto.getText()); foto = foto.getScaledInstance(210, 210, Image.SCALE_DEFAULT); lblfoto.setIcon(new ImageIcon(foto)); } } private void t_imagenproductoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JTextField txtnomimagen = new JTextField(5); } private void t_nombreprovedorActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void b_registrarActionPerformed(java.awt.event.ActionEvent evt) { String sql; // fotoproducto=t_imagenproducto.getText(); sql="INSERT INTO producto (serialproducto,placaproducto,tipoproducto,marcaproducto,descripcionproducto,cantidadproducto,fechaproducto,nombreprovedor,fotoproducto) VALUES (?,?,?,?,?,?,?,?,?)"; try { FileInputStream imagenproducto; PreparedStatement pst=reg.prepareStatement(sql); pst.setString(1,t_serialproducto.getText()); pst.setString(2,t_placaproducto.getText()); pst.setString(3,t_tipoproducto.getText()); pst.setString(4,t_marcaproducto.getText()); pst.setString(5,t_descripcionproducto.getText()); pst.setString(6,t_cantidadproducto.getText()); pst.setString(7,((JTextField)t_fechaproducto.getDateEditor().getUiComponent()).getText()); pst.setString(8,t_nombreprovedor.getSelectedItem().toString()); pst.setString(9, t_imagenproducto.getText()); imagenproducto = new FileInputStream(t_imagenproducto.getText()); pst.setBinaryStream(9,imagenproducto); int n=pst.executeUpdate(); if (n>0){ JOptionPane.showMessageDialog(null,"Registrado con exito"); //mostrardatos(""); } // t_imagenproducto.setText(null); // lblfoto.setIcon(null); } catch (SQLException ex) { Logger.getLogger(form_internal_productos.class.getName()).log(Level.SEVERE, null, ex); } catch (FileNotFoundException ex) { Logger.getLogger(form_internal_productos.class.getName()).log(Level.SEVERE, null, ex); } } private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int fila = tb_producto.getSelectedRow(); if (fila>=0) { t_serialproducto.setText(tb_producto.getValueAt(fila, 0).toString()); t_placaproducto.setText(tb_producto.getValueAt(fila, 1).toString()); t_tipoproducto.setText(tb_producto.getValueAt(fila, 2).toString()); t_marcaproducto.setText(tb_producto.getValueAt(fila, 3).toString()); t_descripcionproducto.setText(tb_producto.getValueAt(fila, 4).toString()); t_cantidadproducto.setText(tb_producto.getValueAt(fila, 5).toString()); // AQUI PARA MOSTRAR EL DATO DE FECHA DE LA TABLA JAVA EN UN JDATECHOOSER SimpleDateFormat formatodeltexto = new SimpleDateFormat("yyyy-MM-dd"); String fecha = tb_producto.getValueAt(fila, 6).toString().trim(); Date dato = null; try { dato = formatodeltexto.parse(fecha); } catch (ParseException e) { e.printStackTrace(); } t_fechaproducto.setDate(dato); /////////////////////////HASTA AQUI////////////////////////// // t_imagenproducto.setText(tb_producto.getValueAt(fila, 7).toString()); String img=tb_producto.getValueAt(fila, 8).toString(); t_imagenproducto.setText(img); Image foto = getToolkit().getImage(img); foto= foto.getScaledInstance(210, 210, 1); lblfoto.setIcon(new ImageIcon(foto)); } else { JOptionPane.showMessageDialog(null,"Selecione una fila para Editar"); } } conectar con = new conectar(); Connection reg = con.conexion(); } Título: Re: Ayuda, mostrar imagen almacenada en mysql y mostrarla en un jlabel Publicado por: MGGM en 1 Octubre 2015, 19:44 pm Primero recuperas la imagen:
Código
Luego creas la imagen a partir del stream binario de la imagen: Código Y se la asignas a un JLabel: Código Título: Re: Ayuda, mostrar imagen almacenada en mysql y mostrarla en un jlabel Publicado por: junca15 en 17 Diciembre 2015, 21:03 pm Amigo muchas gracias por tu ayuda. me sirvio de mucho.
|