PostgreSQL - guardar y selecionar imagenes en postgreSQL

 
Vista:

guardar y selecionar imagenes en postgreSQL

Publicado por ]-[enry (1 intervención) el 10/06/2005 17:45:56
HOLA A TODOS:

HABER SI ALGUIEN DE UDS. ME PUEDE DAR UNA AYUDA EN ESTO:

ESTOY TRABAJANDO CON IMAGENES CON POWER BUILDER Y POSTGRESQL... ESTOY QUE BUSCO Y HASTA AHORA LO UNICO QUE E ENCONTRADO, ES QUE EL TIPO DE DATO QUE ALMACENA IMAGENES EN POSTGRES ES EL "OID" Y HASTA AHORA E LOGRADO ESTO Y ME FUNCIONA EN EL POSTGRES

CREATE TABLE prodimages (id serial, prodid int8, image OID);

INSERT INTO prodimages(id, prodid, image) VALUES (1, '345632', lo_import'/home/mydir/imagen.jpg'));

AHORA LO QUE QUIERO ES QUE DESDE EL POWER BUILDER ME VISUALICE ESTO EN UN OBJETO OLE_1

COMO ESTO PERO NO ME FUNCIONA:

1----------//PARA GRABAR IMAGEN

BLOB lo_imagen
lo_imagen= ole_1.ObjectData

UPDATEBLOB prodimages
SET image = :lo_imagen
WHERE id = 1
USING SQLCA;

IF SQLCA.SQLCODE = -1 THEN
Messagebox('Error','Error al GRABAR imagen : '+SQLCA.SQLERRTEXT )
RETURN
ELSE
Messagebox('Exito','grabacion exitosa')
END IF

2--------//PARA RECUPERAR IMAGEN

BLOB lo_imagen
SELECTBLOB image
INTO :lo_imagen

FROM prodimages
WHERE id = 1

USING SQLCA;

IF SQLCA.SQLCODE = -1 THEN
Messagebox('Error','Error al SELECCIONAR imagen : '+SQLCA.SQLERRTEXT )
RETURN
END IF

// Asignamos la imagen
IF len(lo_imagen) > 0 THEN
Ole_1.ObjectData = lo_imagen
END IF

DONDE ole_1 es una aplicacion de imagenes


O SI HAY OTRA FORMA DE HACCERLO....
Y DE ANTEMANNO GRACIAS!!!!

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:guardar y selecionar imagenes en postgreSQL

Publicado por Alberto (1 intervención) el 05/08/2005 23:34:21
Un saludo. Lo que sucede es que es que SelectBlob y UpdateBlob solo trabaja con tipo de datos Binario, me parece, no utilices Oid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:guardar y selecionar imagenes en postgreSQL

Publicado por Julio (334 intervenciones) el 09/08/2005 17:07:59
No puedes utilizar el Selectblob ni el updateblob en power builder con postgresql, ya que el tipo de dato OID es un tipo de dato muy diferente al binario, cumple la misma función de almacenar objetos grandes (archivos, jpg, gif, pdf, etc.)

Lo que puedes hacer es crear un procedimiento en pgplsql para que cargues el archivo con la función de la base de datos lo_import('ruta_archivo') y para que recuperes el archivo en una ruta especifica lo_expor('ruta_archivo')

En SQL server se podia utilizar lo que mencionas, pero aquí no, yo creo que es mucho mejor hacer que la base de datos cargue la imagen y la recupere o cualquier tipo de archivo guardado en la base de datos, ya que no consume recursos de los clientes.

mira este script que hace la importacion de los archivos a la base de datos:

-- Previamente hago que el power builder copie el archivo a la siguiente ruta:
-- C:\Archivos de Programa\Postgresql\8.0\bin\tmp_input\

-- Function: dbtisalfa.fu_cargar_archivo(varchar, varchar, varchar, varchar, varchar, varchar, date, varchar, date)

-- DROP FUNCTION dbtisalfa.fu_cargar_archivo("varchar", "varchar", "varchar", "varchar", "varchar", "varchar", date, "varchar", date);

CREATE OR REPLACE FUNCTION dbtisalfa.fu_cargar_archivo("varchar", "varchar", "varchar", "varchar", "varchar", "varchar", date, "varchar", date)
RETURNS int8 AS
$BODY$
DECLARE
vc_tabla ALIAS FOR $1;
vc_cod ALIAS FOR $2;
vc_dir ALIAS FOR $3;
vc_nom ALIAS FOR $4;
vc_obs ALIAS FOR $5;
vc_usc ALIAS FOR $6;
vd_fec ALIAS FOR $7;
vc_usu ALIAS FOR $8;
vd_feu ALIAS FOR $9;
vn_return int8;
vn_cuenta int8;
vc_insert varchar(100);
BEGIN
vn_return := 1;
vn_cuenta := 0;
select count(*) into vn_cuenta from dbtisalfa.documento where tabla = vc_tabla and cod_registro = vc_cod;
--- insert
vc_insert :='C:\\Archivos de Programa\\Postgresql\\8.0\\bin\\tmp_input\\'||vc_nom;
if vn_cuenta = 0 or vn_cuenta is null then
insert into dbtisalfa.documento (tabla, cod_registro, direccion, nombre_archivo, archivo, observaciones, cod_usuario_creacion, fec_creacion, cod_usuario_update, fec_update)
values(vc_tabla, vc_cod, vc_dir, vc_nom, lo_import(vc_insert), vc_obs, vc_usc, vd_fec, vc_usu, vd_feu);
vn_return := 1;
else
--- update
update dbtisalfa.documento
set archivo = lo_import(vc_insert),
nombre_archivo = vc_nom,
cod_usuario_update = vc_usu,
fec_update = vd_feu
where tabla = vc_tabla and cod_registro = vc_cod;
vn_return := 1;
end if;
RETURN vn_return;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION dbtisalfa.fu_cargar_archivo("varchar", "varchar", "varchar", "varchar", "varchar", "varchar", date, "varchar", date) OWNER TO system;

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:guardar y selecionar imagenes en postgreSQL

Publicado por Cornelio (1 intervención) el 13/09/2007 23:29:21
hola:

pudiste resolver este caso.....

me puedes decir como?

saludos.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar