insertar archivo en db2

inma
04 de Marzo del 2005
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.

robgonza
04 de Marzo del 2005
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.

inma
04 de Marzo del 2005
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());

CESAR
04 de Marzo del 2005
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?

boycot
04 de Marzo del 2005
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