COMO SUBIR IMAGENES DESDE JAVA A MYSQL (MARIADB) BÁSICO

Buenos dias, en tutoriales anteriores vimos un manual de JInvenarios en el cual entre los datos de la empresa se subía un archivo imagen que es el logo, en este tutorial mostraremos como se hace

Primero tenemos que tener la tabla que es la siguiente

CREATE TABLE `datosempresa` (
  `Nombre` varchar(800) NOT NULL,
  `RazonSocial` varchar(800) NOT NULL,
  `RFC` varchar(15) NOT NULL,
  `Telefono` varchar(100) NOT NULL,
  `Direccion` varchar(1000) NOT NULL,
  `Ciudad` varchar(800) NOT NULL,
  `Pais` varchar(800) NOT NULL,
  `Estado` varchar(800) NOT NULL,
  `Logo` blob NOT NULL
) ENGINE=InnoDB DEFAULT CH

Como pueden ver casi todos son varchar ya que no hare ningun tipo de operaciones matematicos con ellos, el único que no es varchar es blob que es el logo imagen que se va a subir.

Ahora mostramos la función que inserta

package clases;

import herramientas.conexion;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author julioc
 */
public class classDatosEmpresa {
   
    private conexion con;
    PreparedStatement ps;
    ResultSet res;
    
    public String strCiudad;
    public String Direccion;
    public String Estado;
    public File Logo;
    public String strFile;
    public FileInputStream fLogo;
    public String Nombre;
    public String Pais;
    public String RazonSocial;
    public String RFC;
    public String Telefono;
    
    private Sentencias_sql sql; 
    public classDatosEmpresa() {
    sql = new Sentencias_sql();
    con = new conexion();
    
}

 public boolean guardarDatosImagen() throws SQLException, FileNotFoundException{
        String strConsulta;
        FileInputStream fLogo=null;
        File archivo=new File(this.strFile);
        fLogo= new FileInputStream(archivo);
        strConsulta="insert into datosempresa (Nombre,RazonSocial,RFC,Telefono,"
                + "Direccion"
                + ",Ciudad"
                + ",Pais"
                + ",Estado"
                + ",Logo)"
                + "values"
                + "("
                + "?,?,?,?,?,?,?,?,?)";
        ps= con.conectado().prepareStatement(strConsulta);
        ps.setString(1, this.Nombre);
        ps.setString(2, this.RazonSocial);
        ps.setString(3, this.RFC);
        ps.setString(4, this.Telefono);
        ps.setString(5, this.Direccion);
        ps.setString(6, this.strCiudad);
        ps.setString(7, this.Pais);
        ps.setString(8, this.Estado);
        ps.setBinaryStream(9,fLogo);
        ps.executeUpdate();
        return true;
    }

}

Y desde el frame lo mandamos llamar

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        classDatosEmpresa empresa = new classDatosEmpresa();
        try {
            empresa.EliminarEmpresa();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "ERROR AL ELIMINAR ");
        }
        
        empresa.Direccion=this.txtDireccion.getText();
        empresa.Estado=this.cboEstado.getSelectedItem().toString();
        empresa.strCiudad=this.txtCiudad.getText();
        empresa.Pais=this.cboPais.getSelectedItem().toString();
        empresa.Nombre=this.txtNombre.getText();
        empresa.RFC=this.txtRFC.getText();
        empresa.Telefono=this.txtTelefono.getText();
        empresa.RazonSocial=this.txtRazonSocial.getText();
        empresa.strFile=this.txtImagen.getText();
           //DATOS EMPRESA
        herramientas.globales.gstrCiudad=empresa.strCiudad;
        herramientas.globales.gstrDireccion=empresa.Direccion;
        
        herramientas.globales.gstrNombre=empresa.Nombre;
        herramientas.globales.gstrPais=empresa.Pais;
        herramientas.globales.gstrRazonSocial=empresa.RazonSocial;
        herramientas.globales.gstrRFC=empresa.RFC;
        herramientas.globales.gstrTelefono=empresa.Telefono;
        
      
        try {
            try {
                //   if (empresa.ingresarDatosEmpresa()==true){
                if (empresa.guardarDatosImagen()==true){
                    JOptionPane.showMessageDialog(null, "INFORMACION GUARDADA ");
                    
                    
                    this.dispose();
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(frmInformacionEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (SQLException ex) {
            Logger.getLogger(frmInformacionEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "ERROR AL GUARDAR ");
        }
        
    }

A pero antes de todo eso tuvimos que jalar la imagen creamos en botón Seleccionar imagen y en el click ponemos lo siguiente

  private void btnSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {                                               
        JFileChooser archivo = new JFileChooser();
        
        int ventana = archivo.showOpenDialog(null);
       
        if (ventana == JFileChooser.APPROVE_OPTION){
            
            File file = archivo.getSelectedFile();
           
            this.txtImagen.setText(String.valueOf(file));
            
            logo = getToolkit().getImage(this.txtImagen.getText());
            
            
            logo=logo.getScaledInstance(250,Math.round(250*(250/logo.getWidth(null))), Image.SCALE_DEFAULT);
            //logo=logo.getScaledInstance(100,100, Image.SCALE_DEFAULT);
            
            this.lblImagen.setIcon(new ImageIcon(logo));
        }
    } 

Saludos Espero que les sirva


0