Facebook Fanpage


domingo, 30 de septiembre de 2012

Guardar imagen en MySQL con netbeans

Cuando se tienen imagenes (fotografías, postales, wallpapers, etc) que se quieren guardar en una base de datos MySQL utilizando java, estas imágenes deben ser convertidas a cadenas de Bytes para que pueden ser introducidas en la base de datos, java cuenta con el objeto BLOB para realizar esto.


Pero mejor vamos a lo que interesa, que es el COMO.


nombre archivo: bart.jpg


Paso 1: Para este ejemplo haremos uso de una tabla "fotos" que cuenta con tres atributos entre ellos "foto" de tipo BLOB, así que debes crear esta tabla.




Paso 2: Para conectar nuestra aplicación con la base de datos nos ayudamos de nuestra clase conectate.java creada en un post anterior.
Paso 3: Una ves que tenemos la tabla creada y la clase conectate lista, crearemos un nuevo proyecto en Netbeans llamada "imagen", a este proyecto añadimos la clase conectate, java y creamos una nueva clase "fotoclass.java" esta sera la encargada de realizar las funciones de guardado. debes tener algo como esto hasta ahora.




Paso 4: Nuestra clase "fotoclass.java", con el metodo guardarfoto(), que recibe como parámetros  el nombre de la foto y la ruta física de la imagen en nuestra pc. Esta función realiza una consulta sql e introduce la foto convertida previamente en bytes en la base de datos.


package imagen;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * @web http://jc-mouse.blogspot.com
 * @author mouse
 */
public class fotoclass {
    conectate con;
  public fotoclass (){
    con = new conectate();
  } 
      
public void guardarfoto(String nombre, String foto) {
        {
            FileInputStream fis = null;
            try {
                File file = new File(foto);
                fis = new FileInputStream(file);

                PreparedStatement pstm = con.getConnection().prepareStatement("insert into " + 
                        " fotos(nombre, foto) " + " values(?,?)");
                pstm.setString(1, nombre);                
                pstm.setBinaryStream(2, fis,(int) file.length());
                pstm.execute();
                pstm.close();
            } catch (FileNotFoundException ex) {
                Logger.getLogger(fotoclass.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException e) {
                System.out.println(e);
            } finally {
                try {
                    fis.close();
                } catch (IOException ex) {
                    Logger.getLogger(fotoclass.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
   }
}


Paso 5: la clase Main.


package imagen;

/**
 * @web http://jc-mouse.blogspot.com
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {        
        fotoclass f = new fotoclass();        
        f.guardarfoto("Bart Simpsons", "e:/bart.jpg");
    }
    
}


Creamos nuestro objeto, hacemos uso de la función guardarfoto(), especificando el nombre de la imagen y la ruta física del archivo. OJO con la extensión del archivo. ejecuta el programa y la foto sera convertida e introducida a la base de datos.


0 comentarios:

Publicar un comentario