Cuando se tienen imagenes (fotografias, postales, wallpapers, etc) que se quieren guardar en una base de datos MySQL utilizando java, estas imagenes 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 intereza, 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, asi que debes crear esta tabla.
Paso 2: Para conectar nuestra aplicacion 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 parametros, el nombre de la foto y la ruta fisica de la imagen en nuestra pc. Esta funcion 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 funcion guardarfoto(), especificando el nombre de la imagen y la ruta fisica del archivo. OJO con la extension del archivo. ejecuta el programa y la foto sera convertida e introducida a la base de datos.
13 comentarios:
en verdad que mis respetos men la verdad es que estan muy muy faciles de entender tus post ademas que muy utilez GRACIASS!!!!!!!!!!!!
Tengo un programa muy parecido pero donde debo convertir el objeto imagen a un bufferedimage , y cuando hago que se me cargue la imagen me carga una pantalla negra, y no la imagen guardada en la base de datos MySQL, y se que estan bien guardados ayudame jc mouse por fa te lo agradeceria
Ya tengo el Proyecto en netbeans 6.9
cualquiera que lo quiera solo me lo pide
esta libre
elder.alcaraz@gmail.com
muchas gracias por el aporte, pero tengo una duda! como incluyo en un reporte de ireport una imagen, guardada en mysql? ojala me puedas ayudar =)
Hola, q tal?, ojala me pueda ayudar lo que yo tengo es una imagen en un objeto de la clase Image y quiero guardarlo directamente en la base de datos, sin tener que guardarlo en un archivo para hacer todos los pasos de conversion, sabes si hay alguna forma de hacer eso?
Muchas Gracias. Saludos :)
Muy buen material gracias, por ejemplo yo tengo una base de datos de acces y quiero hacer lo mismo, es posible?
disculpa tienes un tutorial de si una vez que guarde la imagen en la base de datos ahora pueda abrir la imagen?
PD: muy buenas tus publicaciones son muy faciles de entender :D
Felicidades Maestro... Muy buenos Posts, seguí adelante!
como puedo permitir que realise una busqueda en el equipo de a imagen y la suba a la base de datos
Hola, mil gracias por el programa, mira tengo un problema corro el programa y me marca este error:
Exception in thread "main" java.lang.NullPointerException
at fotossss.fotoclass.guardarfoto(fotoclass.java:37)
at fotossss.Main.main(Main.java:22)
Java Result: 1
La verdad soy nuevo en esto y no tengo mucha idea de este problema.
Espero tu respuesta
Me aparece el mismo error a mi tambien NetBeans 7.4
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Exception in thread "main" java.lang.NullPointerException
at imagen.fotoclass.guardarfoto(fotoclass.java:37)
at imagen.Imagen.main(Imagen.java:22)
A espera de tu ayuda.
Saludos.
Muy buen post.
Gracias.
Hola Mouse, oye una cuestión como podría guardar un documento por ejemplo un .pdf en MySQL usando java?
Publicar un comentario