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... |