insertar archivo en db2
Tengo que inserta desde un servlet, un archivo en una tabla db2, la columna es un tipo de dato blob
¿alguien sabe cómo hacerlo? La inserción normal falla.
¿alguien sabe cómo hacerlo? La inserción normal falla.
Yo tambien ando liado intentando insertar un BLOB, pero en Oracle.
He buscado en Internet y solo he encontrado esto:
"Para insertar un BLOB hay que pasarlo como parametro de entrada a un objeto 'PreparedStatement' con el metodo 'setBlob()'"
Por ejemplo:
PreparedStatement ps = conexion.prepareStatement("INSERT INTO x VALUES (?)");
ps.setBlob(1, 'blob');
El problema es que no se como crear el blob ese que se pasa. Si descubres alguna forma de hacerlo te agradeceria que me lo comentases.
He buscado en Internet y solo he encontrado esto:
"Para insertar un BLOB hay que pasarlo como parametro de entrada a un objeto 'PreparedStatement' con el metodo 'setBlob()'"
Por ejemplo:
PreparedStatement ps = conexion.prepareStatement("INSERT INTO x VALUES (?)");
ps.setBlob(1, 'blob');
El problema es que no se como crear el blob ese que se pasa. Si descubres alguna forma de hacerlo te agradeceria que me lo comentases.
En lugar de pasarlo con un setBlob, pásalo en forma de setBinaryStream, aquí fichero es un objeto de tipo File. Lo he probado y funciona
pr = con.prepareStatement("INSERT INTO ICARMONA.PRODUCTOS (REF, IMAGEN) VALUES ( ?, ?)");
FileInputStream f = new FileInputStream(fichero);
pr.setString(1, ref);
pr.setBinaryStream(2, f, (int) fichero.length());
pr = con.prepareStatement("INSERT INTO ICARMONA.PRODUCTOS (REF, IMAGEN) VALUES ( ?, ?)");
FileInputStream f = new FileInputStream(fichero);
pr.setString(1, ref);
pr.setBinaryStream(2, f, (int) fichero.length());
HOLA QUE TAL SOY ESTUDIANTE DE NOVENO DE INGENIERIA Y ESTOY REALIZANDO BASES DE DATOS ORIENTADAS A OBJETOS EN ORACLE, TE PEDIERIA DE FAVOR ME ENVIARAS UN EJEMPLO MAS COMPLETO DE COMO LO HACES?
hola guys... he encontrado otra solucion, manejar los datos como un array de bytes, de la siguiente forma
FileInputStream in = new FileInputStream(archivo);
byte data[] = new byte[in.available()];
in.read(data);
PreparedStatement pstmt = cx.prepareStatement("UPDATE X SET sor = ? WHERE trayecto = 1");
pstmt.setBytes(1, data);
int rs = pstmt.executeUpdate();
la idea es: que el array de bytes se puede guardar en un campo de tipo Blob en la BD sin problema alguno
FileInputStream in = new FileInputStream(archivo);
byte data[] = new byte[in.available()];
in.read(data);
PreparedStatement pstmt = cx.prepareStatement("UPDATE X SET sor = ? WHERE trayecto = 1");
pstmt.setBytes(1, data);
int rs = pstmt.executeUpdate();
la idea es: que el array de bytes se puede guardar en un campo de tipo Blob en la BD sin problema alguno
