RE: Guardar imagen desde java

From: "Hugo Gamarra" <hgamarra(at)hacienda(dot)gov(dot)py>
To: "'PostGreSQL'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Guardar imagen desde java
Date: 2005-01-31 13:51:33
Message-ID: 000701c5079c$025c8e80$ef06000a@SSET.GOV.PY
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Compañeros muchísimas gracias por sus consejos
El codigo quedo asi
Para guardar en la base

public void setImagen(String tipImagen,
int numImagen,
String path,
String nomArchivo)throws SQLException {
try{
File f = new File(path+nomArchivo);
FileInputStream s = new FileInputStream(f);
PreparedStatement p = c.prepareStatement("insert into
imagenes values(?, ?, ?, ?)");
p.setString(1, "ICO");
p.setInt(2, numImagen);
p.setString(3, f.getName());
p.setBinaryStream(4, s, (int)f.length());
p.executeUpdate();
s.close();
}
catch(Exception e){
throw new SQLException( "No se pudo guardar la imagen.\n" +
e);
}
}

y este es el código con el cual recupero de la Base la imagen
public ImageIcon getImagen(String tipImagen,
int numImagen)throws SQLException {
if (c==null){
throw new SQLException("Para recuperar una imagen la
coneccion no puede ser nula");
}
PreparedStatement p = c.prepareStatement( "select imagen "
+
" from imagenes "
+
" where tip_imagen =
?" +
" and num_imagen =
?" );
p.setString (1, tipImagen);
p.setInt (2, numImagen);
ResultSet r = p.executeQuery();
ImageIcon m = new ImageIcon();
while (r.next()){
byte[] i = null;
i = r.getBytes("imagen");
m = new ImageIcon(i);
}
r.close();
p.close();
return m;
}

Saludos cordiales,
Hugo Gamarra.

> -----Mensaje original-----
> De: Ricardo Fuentes Pereira [mailto:rfuentesp(at)gmail(dot)com]
> Enviado el: Viernes, 28 de Enero de 2005 11:58
> Para: Hugo Gamarra
> Asunto: Re: [pgsql-es-ayuda] Guardar imagen desde java
>
> Hugo Gamarra wrote:
>
> >Buenos Días Compañeros
> >
> >Tengo una consulta espero me puedan ayudar,
> >Estoy queriendo guardar unas imágenes desde java en un campo del
bytea,
> >En encontré con este código que esta en documentación del JDBC
> >---
> >File file = new File("myimage.gif");
> >FileInputStream fis = new FileInputStream(file);
> >PreparedStatement ps = c.prepareStatement("INSERT INTO images VALUES
(?,
> >?)");
> >ps.setString(1, file.getName());
> >ps.setBinaryStream(2, fis, file.length());
> >ps.executeUpdate();
> >ps.close();
> >fis.close();
> >---
> >pero al tratar de implementarla me lanza el siguiente error
> >
> >sistemita/recursos/definiciones.java [261:1]
> >setBinaryStream(int,java.io.InputStream,int) in
> >java.sql.PreparedStatement cannot be applied to
> >(int,java.io.FileInputStream,long)
> >ps.setBinaryStream(2, fis, file.length());
> > ^
> >1 error
> >Errors compiling definiciones.
> >
> >El problema es que setBinaryStream no acepta como valor un
> >FileInputStream, pero el InputStream es una clase abstracta
> >
> >
> Me parece que no es por eso, sino mas bien pq la definicion de los
> parametros es asi:
>
> setBinaryStream(int,java.io.InputStream,int) <----Ojo, un int al final
>
> y el metodo lenght() devuelve un long.
>
> Podrias hacer un cast y contarnos si pudiste ingresar la imagen.
> O sea queda asi:
> ...
> ps.setBinaryStream(2, fis, (int) file.length());
> ...
>
> No te olvides de contarnos si pudiste o no.
>
> Saludos

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Pablo Espino 2005-01-31 14:08:04 Re: Hola a todos de la lista me presento
Previous Message Ernesto Quiñones 2005-01-31 13:15:05 Re: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Capaci tación