Muchas gracias por tu ayuda
pero intenté creando la tabla con el campo 'lo' y me arroja lo siguiente
Código SQL
[-]
ERROR: no existe el tipo «lo»
LINE 4: picture lo,
^
********** Error **********
(utilizo Delphi XE, ZeosLib, y postgres 9.02)
seguí investigando en el foro y me encontré con unas pistas muy practicas
como la siguiente
(obviamente hablo pascal, tu ya lo traducirás a C)
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
stream:TMemoryStream;
begin
if fileexists('C:\Archivo.dat') then
begin
try
stream:=TMemoryStream.Create;
stream.LoadFromFile('C:\Archivo.dat');
ZQuery1.SQL.Add('INSERT INTO temp(imagen) VALUES(:ARCHIVO);');
ZQuery1.ParamByName('ARCHIVO').LoadFromStream(stream,ftBlob);
ZQuery1.ExecSQL;
finally
stream.Free;
end;
end;
end;
funciona siempre y cuando el campo declarado en la base de datos postgres sea de tipo BYTEA, y se hubiese cambiado la configuración en el archivo "postgresql.conf" del postgres, pues hubo un cambio en la forma en que se comporta este campo de la versión 8 a la 9 de postgres, y el cambio que hay que realizar es el siguiente:
buscar la linea comentada en el postgresql.conf
# bytea_output = 'hex'
y cambiarla por
bytea_output = 'escape'
si no se realiza este cambio, el campo por defecto entregara nuestros datos en hexadecimal, asi los hubiesemos guardado en binario.(esto lo averigüe despues de horas de documentación, pues casi no vi documentación al respecto) lo publico para quienes tienen el mismo problema
aclaro que es para postgres 9.02
ahh!!
y para leer el dato almacenado o guardarlo...
un simple casting
Código Delphi
[-]
...
TBlobField(ZQuery1.FieldByName('imagen')).SaveToFile('C:\archivo.jpg');
...
muchas gracias por tu información y tu ayuda KATODO
saludos desde Colombia