La Web del Programador: Comunidad de Programadores
 
    Pregunta:  30441 - EXTRAER OBJETOS LARGOS DE UN RESULTSET
Autor:  David
Tengo una BD postgreSQL, y en una de sus tablas almaceno, en un objeto OID, fotos de los usuarios de una aplicacion java, que es la que accede a ella. Hasta ahora extraía las imágenes de esta forma:

ResultSet oid=sentencia.executeQuery(\"SELECT foto FROM fotos where nif =\'lo que sea\';\");
oid.next();
int a=sentencia.executeQuery(\"SELECT lo_export(\'\"+oid.getString(1)+\"\',\'/ruta/foto.gif\');\");

Esto solo me sirve en el ordenador en el que está la base de datos, ya que lo_import parece trabajar localmente (en el sistema de ficheros del servidor de base de datos).
Como puedo extraer la imagen del resultset y vincularla directamente, por ejemplo, a un imageIcon??
Gracias

  Respuesta:  David de Lorenzo Díez
A ver, como nadie quiere ser mi amigo os lo digo... Si conseguis el driver JDBC más moderno disponible no tendreis problemas.

Para importar la foto a la base de datos: usad lo_import (esto es fácil así q no digo más)
Para extraer la foto= haceis la select de esta forma
Resulset res=conexion.executeQuery( SELECT foto FROM tabla_fotos WHERE...) Foto es un campo del tipo OID.
El objeto resulset tiene un método que con el driver actualizado funciona bien, que es getBytes(); haced lo siguiente

byte bytesFoto[]= res.getBytes(1); //Primera columna del resultset donde está foto
.....
y ya mas tarde

Icon t=new ImageIcon(bytesFoto);
Si en la BD metísteis una foto del tipo gif o jpg no tendreis problemas...