Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2004
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Unhappy Large Objects en PostgreSQL


Bueno, antes que nada, me disculpo si este no es el lugar apropiado para poner un Hilo sobre PostgreSQL, pero decidi ponerlo aqui por ser MySQL el hermano gemelo de PostgreSQL.

Me gustaria saber como puedo insertar en una tabla un campo de texto grande (Large Object o BLOB).

En la documentación de postgreSQL encuentro:
----------------------------------------------------------
CREATE TABLE image (
name text,
raster oid
);

INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));

SELECT lo_export(image.raster, '/tmp/motd') FROM image
WHERE name = 'beautiful image';

--------------------------------------------------------------------------------


No tengo problemas haciendo un select, pues una vez en la base de datos, se puede manipualr bien el OID, sin embargo para insertar un campo tengo dificultades por que el servidor es linux y los clientes trabajan en Windows. no puedo hacer el lo_import, mientras los datos esten en el cliente.



Intente probando un TDBDEMO y me funciono, porque el usuario entra el texto en el componente y al darle post, lo guarda en el servidor.



Pero ...¿si no quiero utilizar el TDBDEMO sino enviar el texto como un parametro de la consulta?


Para eso hice algo parcedio a esto:

zQuery1.close;
zQuery1.sql:text:='Insert into tabla (campo1, campo2, campo3) values (valor_campo1, valor_campo2, arametro_blob)';
zQuery1.parambyname('parametro_blob').asblob:=Texto_grande;
zQyuery1.ExecSql;

Pero me sale un "parse error", y me muestra el texto que se envio como parametro. por ejemplo si el texto contien: "Las rosas son muy bonitas", el error que me sale es:

Parse error near 'las rosas son muy bonitas'


Pense en mis amigos que trabajan en Visual Basic y de inmediato pensé en una chapuza: crear u ocultar un TDBMemo y utilizarlo como puente cada vez que vaya a insertar un Large object.... pero como dije... fué inspirado en mis compañeros programadores de visual basic.


Les agradezco si me pueden orientar

Última edición por gatosoft fecha: 28-05-2004 a las 18:35:07.
Responder Con Cita
  #2  
Antiguo 28-05-2004
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Bueno, creo que ya resolvi el problema....

Sucede que al hacer el insert no hay forma de decirle al query que lo que le voy a pasar es un OID... (eso es lo que creo). Entonces hago lo sigiente:
Código:
zQuery.sql.text:='Select * from tabla
where condicion_que_no trae_registros';
zQuery.Open;
Esto trae la estructura de la tabla y ahora hago:
Código:
zQuery.Append;
zquery.fiedlbyname('Campo_OID').asString:=Texto_Largo;
{...}
zQuery.post;
Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:10:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi