2009-12-21 14 views
7

Quiero almacenar una imagen en una base de datos MySQL. Creé una tabla con un tipo de datos BLOB, pero ahora ¿cómo guardo la imagen en esta tabla?¿Cómo guardo una imagen en MySQL?

+4

Mejor opción podría ser almacenar la ruta física de la imagen en la base de datos. –

Respuesta

11

Es posible que desee comprobar los siguientes ejemplos e:

De java2s.com: Insert picture to MySQL:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 

public class InsertPictureToMySql { 
    public static void main(String[] args) throws Exception, IOException, SQLException { 
    Class.forName("org.gjt.mm.mysql.Driver"); 
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/databaseName", "root", "root"); 
    String INSERT_PICTURE = "INSERT INTO MyPictures (photo) VALUES (?)"; 

    FileInputStream fis = null; 
    PreparedStatement ps = null; 
    try { 
     conn.setAutoCommit(false); 
     File file = new File("/tmp/photo.png"); 
     fis = new FileInputStream(file); 
     ps = conn.prepareStatement(INSERT_PICTURE); 
     ps.setBinaryStream(1, fis, (int) file.length()); 
     ps.executeUpdate(); 
     conn.commit(); 
    } finally { 
     ps.close(); 
     fis.close(); 
    } 
    } 
} 

tabla MySQL:

CREATE TABLE MyPictures (
    photo BLOB 
); 

Si la imagen se encuentra en el host del servidor MySQL, se podría utilizar el comando LOAD_FILE() de un cliente MySQL:

INSERT INTO MyPictures (photo) VALUES(LOAD_FILE('/tmp/photo.png')); 
+0

¿Podemos insertar la imagen usando un lenguaje de consulta simple? –

+3

Sí, es posible que desee intentar utilizar la función 'LOAD_FILE()': 'INSERT INTO mytbl (image_data) VALUES (LOAD_FILE ('/ tmp/myimage.png'));' (http://www.freeopenbook.com /mysqlcookbook/mysqlckbk-CHP-17-SECT-7.html) –

+0

Su compañero no funciona ... –

Cuestiones relacionadas