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

Problemas recuperar CLOB desde BBDD Oracle

Estas en el tema de Problemas recuperar CLOB desde BBDD Oracle en el foro de Java en Foros del Web. Buenos Días, Tengo una BBDD Oracle con codificación NLS_CHARACTERSET = WE8ISO8859P1 . Tengo una tabla con un BLOB en la que guardo imágenes de tipo ...
  #1 (permalink)  
Antiguo 11/06/2014, 08:02
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Problemas recuperar CLOB desde BBDD Oracle

Buenos Días,

Tengo una BBDD Oracle con codificación NLS_CHARACTERSET = WE8ISO8859P1 . Tengo una tabla con un BLOB en la que guardo imágenes de tipo jpg, gif, etc separados por tags [FICHERO] de esta forma..
[FICHERO nombre1.jpg] Codificación del fichero de imagen 1
[FICHERO nombre2.gif] Codificación del fichero de imagen 2
......
[FICHERO nombren.jpg] Codificación del fichero de imagen N

En java recupero este BLOB, hago un split para separar los trozos de cada imagen y el problema viene cuando esos trozos los grabo en ficheros separados.
La codificación parece estar bien, pero no es exactamente igual que el campo de la BBDD original, sustituye algunos caracteres por otros y las imágenes no se ven bien.

Creo que es un problema de codificación entre la BBDD y luego recuperar este texto como string. Llevo una semana pegándome con esto, alguien podría echarme una mano.

Dejo este trozo de código por si les puede ayudar, si necesitan cualquier información adicional no duden en consultarme.

En este codigo recupero el BLOB y tambien lo guardo en un fichero, de este fichero extraigo manualmente los trozos de la imagenes y las guardo en fichero separados y las imagenes se ven bien. Pero al hacerlo en JAVA con el String es cuando me falla.

// Recuperar BLOB
File file = new File(pathname);
fos = new FileOutputStream(file);
Blob bin = rs.getBlob("img_imagen");
InputStream inStream = bin.getBinaryStream();
int size = (int)bin.length();
byte[] buffer = new byte[size];
int length = -1;
while ((length = inStream.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}

// La clob recuperado lo pongo en un String
cadena = new String(buffer);

// Después troceo el String y voy guardando los trozos en ficheros.

Saludos y gracias de antemano
Jose Miguel
  #2 (permalink)  
Antiguo 11/06/2014, 08:33
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problemas recuperar CLOB desde BBDD Oracle

Cita:
Tengo una tabla con un BLOB en la que guardo imágenes de tipo jpg, gif, etc separados por tags [FICHERO] de esta forma..
[FICHERO nombre1.jpg] Codificación del fichero de imagen 1
[FICHERO nombre2.gif] Codificación del fichero de imagen 2
Como su nombre indica, un blob es un montón de 1 y 0, y así se guardan y recuperan de la base de datos. Por lo tanto, lo que guardas es lo que recuperas, no hay conversión en ese proceso.

¿Guardar bits de imágenes mezclados con bits de palabras? No creo que sea buena idea.

Cita:
En este codigo recupero el BLOB y tambien lo guardo en un fichero, de este fichero extraigo manualmente los trozos de la imagenes y las guardo en fichero separados y las imagenes se ven bien.
No entiendo a qué te refieres con lo de extraigo manualmente, los guardas en un fichero y se ven bien. ¿De qué código hablas?¿Del de java?

No queda claro qué haces cuando dices que se ven bien y lo que haces cuando no.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: bbdd, oracle, string
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 04:18.