Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Imagenes+Base de Datos+Java

Estas en el tema de Imagenes+Base de Datos+Java en el foro de Java en Foros del Web. Hola: Estoy intentando insertar imágenes en una base de datos SQLite. Para hacerlo tengo esto: Código: FileInputStream entrada = null; try { Class.forName("org.sqlite.JDBC"); Connection conn ...
  #1 (permalink)  
Antiguo 03/03/2013, 09:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 159
Antigüedad: 17 años, 8 meses
Puntos: 4
Imagenes+Base de Datos+Java

Hola:

Estoy intentando insertar imágenes en una base de datos SQLite. Para hacerlo tengo esto:

Código:
FileInputStream entrada = null;
        try {
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:imagenes.sqlite");
            PreparedStatement pst = conn.prepareStatement("INSERT INTO fotos VALUES (1,'wallpaper-1656479.jpg',?)");
            conn.setAutoCommit(false);
            File fila_1 = new File("/home/Andre/Descargas/wallpaper-1656479.jpg");
            entrada = new FileInputStream(fila_1);
            pst.setBinaryStream(1, entrada, (int) fila_1.length());
            pst.executeUpdate();
            conn.commit();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } finally {
            try {
                entrada.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}
Bueno pues da este error:
java.sql.SQLException: not implemented by SQLite JDBC driver
at org.sqlite.Unused.unused(Unused.java:29)
at org.sqlite.Unused.setBinaryStream(Unused.java:60)
at sqlitefotos.SQLiteFotos.main(SQLiteFotos.java:34) -->pst.setBinaryStream(1, entrada, (int) fila_1.length());
Para la tabla tengo:
Código:
CREATE TABLE fotos (
   ...> id_foto int not null primary key,
   ...> nombre varchar(30),
   ...> imagen blob not null);
Como este código está sacado de un ejemplo con MySQL he hecho esto mismo para MySQL:

Código:
FileInputStream entrada = null;
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/fotos", "root", "contraseña");
            PreparedStatement pst = conn.prepareStatement("INSERT INTO tabla_1 VALUES (1,'wallpaper-1656479.jpg',?)");
            conn.setAutoCommit(false);
            File fila_1 = new File("/home/Andre/Descargas/wallpaper-1656479.jpg");
            entrada = new FileInputStream(fila_1);
            pst.setBinaryStream(1, entrada, (int) fila_1.length());
            pst.executeUpdate();
            conn.commit();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } finally {
            try {
                entrada.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
La salida que proporciona es:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'imagen' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:2983)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:16 31)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java :1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java: 3283)
at com.mysql.jdbc.PreparedStatement.executeInternal(P reparedStatement.java:1332)
at com.mysql.jdbc.PreparedStatement.executeUpdate(Pre paredStatement.java:1604)
at com.mysql.jdbc.PreparedStatement.executeUpdate(Pre paredStatement.java:1519)
at com.mysql.jdbc.PreparedStatement.executeUpdate(Pre paredStatement.java:1504)
at mysqlfotos.MySQLFotos.main(MySQLFotos.java:33) --> pst.executeUpdate();
Para la tabla tengo:
Código:
create table tabla_1 (
    -> id_foto int not null,
    -> nombre varchar(30),
    -> imagen blob not null);
Como soy bastante novato con las bases de datos y tampoco tengo un gran nivel en Java, pues no tengo ni idea de lo que está fallando.
Puede darme alguien una mínima orientación de como puedo meter las imágenes en la base de datos. Decir que la fórmula que más me interesa en la de SQLite pero si alguien tiene idea de hacerlo de cualquier otra forma pues es bienvenida.

Gracias.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:40.