Lists: | pgsql-general |
---|
From: | Jerry LeVan <jerry(dot)levan(at)eku(dot)edu> |
---|---|
To: | daniel(at)manitou-mail(dot)org |
Cc: | Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: [DEFAULT] Daily digest v1.4551 (20 messages) |
Date: | 2004-07-28 19:45:10 |
Message-ID: | A2AF1F4F-E0CE-11D8-BC31-000393779D9C@eku.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
Thank you Daniel,
Is it the case that "insert" could be used in a similiar
fashion to load the bytea field?
Jerry
On Jul 28, 2004, at 3:07 PM,Daniel Verite wrote:
>
> Date: Wed, 28 Jul 2004 16:45:10 +0200
> From: "Daniel Verite" <daniel(at)manitou-mail(dot)org>
> To: "Postgres General" <pgsql-general(at)postgresql(dot)org>
> Subject: Re: Loading/Retrieving bytea fields?
> Message-ID: <20040728164529(dot)5143560(at)uruguay(dot)brainstorm(dot)fr>
>
> Jerry LeVan writes
>
>> Has anyone found some C code that shows how to load/extract data from
>> a
>> bytea column?
>
> This works for me:
>
> int size;
> const char* contents;
> PGresult* res;
> res = PQexecParams(pgconn,
> "SELECT contents FROM tblob WHERE pkey=value",
> 0, NULL,NULL,NULL,NULL, /* no input parameters */
> 1 /* output in binary format */ );
>
> if (res && PQresultStatus(res)==PGRES_TUPLES_OK) {
> size = PQgetlength(res, 0, 0);
> contents = PQgetvalue(res, 0, 0); /* binary representation */
> }
>
> I believe that you may also use the plain PQexec instead of
> PQexecParams,
> but then you would have to call PQunescapeBytea() on the bytea column
> in the
> results, so it's likely to be less efficient. I haven't tried that,
> though.
>
From: | "Daniel Verite" <daniel(at)manitou-mail(dot)org> |
---|---|
To: | "Postgres General" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: [DEFAULT] Daily digest v1.4551 (20 messages) |
Date: | 2004-07-28 23:16:06 |
Message-ID: | 20040729011602.5787736@localhost |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
Jerry LeVan writes
> Is it the case that "insert" could be used in a similiar
> fashion to load the bytea field?
Here's a code snippet for inserting a (varchar,bytea) tuple.
int write_bytea(const char* pkey, const char* buf, int size)
{
Oid in_oid[]={1043,17}; /* varchar, bytea */
const char* params[]={pkey,buf};
const int params_length[]={strlen(pkey),size};
const int params_format[]={0,1}; /* text,binary */
PGresult* res;
res = PQexecParams(pgconn,
"INSERT INTO tblob(pkey,contents) VALUES ($1,$2)",
sizeof(params)/sizeof(params[0]),
in_oid, params, params_length,
params_format, 1);
if (res && PQresultStatus(res)==PGRES_COMMAND_OK) {
/* success */
}
}
--
Daniel
PostgreSQL-powered mail user agent and storage: http://www.manitou-mail.org