Acceso a Objetos binarios tipo LO atraves de la librería libpq

From: "Roberto Tortolero" <roberto(dot)tortolero(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Acceso a Objetos binarios tipo LO atraves de la librería libpq
Date: 2007-06-15 15:59:13
Message-ID: b9962380706150859g6bc227eew69c93f5a44c67d7c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas tardes.

Estoy desarrollando una libreria para tener acceso a objetos de tipo LO a
través de la libreria libpq.

Pero todavia no logro entender como hacer para insertar un objeto ni
retornarlo a traves de las interfaces lo_import y lo_export.

Ellas solo utilizan un objeto PGconn para establecer la conexion con la base
de datos, y eso esta bien, lo que no entiendo es que yo necesito hacer un
query y del resultado que me devuelva insertar un objeto LO en ese registro
o retornarlo si asi es el caso.

Seria de mucha utilidad su ayuda en este tema ya que no se que mas hacer.

Aneo el codigo que estoy utilizando para ver si existe un error.

//////////////////////////////////////////////////////////
int
main(int argc, char **argv)
{
char *in_filename,
*out_filename;
char *database;
Oid lobjOid;
PGconn *conn;
PGresult *res,*res1;

if (argc != 4)
{
fprintf(stderr, "Usage: %s database_name in_filename
out_filename\n",
argv[0]);
exit(1);
}

database = argv[1];
in_filename = argv[2];
out_filename = argv[3];

/*
* set up the connection
*/
conn =
PQsetdbLogin("localhost","5432",NULL,NULL,database,"postgres","postgres");

//conn = PQsetdb("192.168.0.11", "5434", NULL, NULL, database);

/* check to see that the backend connection was successfully made */
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database '%s' failed.\n", database);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}

res = PQexec(conn, "begin");
PQclear(res);

res1 = PQexec(conn, "select imagen from prueba where codigo = 1");

if (PQresultStatus(res1) != PGRES_TUPLES_OK)
{
fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
PQclear(res1);
exit_nicely(conn);
}

printf("conexion exitosa con la tabla prueba %i, %s %i \n",
PQntuples(res1),PQfname(res1,0),PQftype(res,0));

printf("importing file %s\n", in_filename);
// lobjOid = importFile(conn, in_filename);
lobjOid = lo_import(conn, in_filename);
PQclear(res1);

/*
printf("as large object %d.\n", lobjOid);

printf("picking out bytes 1000-2000 of the large object\n");
pickout(conn, lobjOid, 1000, 1000);

printf("overwriting bytes 1000-2000 of the large object with X's\n");
overwrite(conn, lobjOid, 1000, 1000);
*/

// printf("exporting large object to file %s\n", out_filename);
/* exportFile(conn, lobjOid, out_filename); */
//lo_export(conn, lobjOid, out_filename);

res = PQexec(conn, "end");
PQclear(res);
PQfinish(conn);
exit(0);
}
//////////////////////////////////////////////////////////

La tabla que estoy utilzando de prueba es la siguiente:

CREATE TABLE "public"."prueba" (
"imagen" "public"."lo",
"codigo" INTEGER
) WITHOUT OIDS;

Muchisimas gracias de antemano.

Hasta Luego.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Paulina Rodas 2007-06-15 16:03:18 Re: Acceso a una base de datos postgresql desde un AS/400
Previous Message Paulina Rodas 2007-06-15 15:57:49 Oracle - Postgres