Re: [INTERFACES] question on accessing PostgreSQL with C - Mailing list pgsql-interfaces

From James Thompson
Subject Re: [INTERFACES] question on accessing PostgreSQL with C
Date
Msg-id Pine.GSO.4.05.9902061850530.6735-100000@noether.math.ksu.edu
Whole thread Raw
In response to question on accessing PostgreSQL with C  (hoelc <hoelc@pd.jaring.my>)
Responses Re: [INTERFACES] question on accessing PostgreSQL with C
List pgsql-interfaces
On Sun, 7 Feb 1999, hoelc wrote:

>
> (2)  How to put variables into the SQL?
>         I use C program to access PostgreSQL with libpq, and use PQexec(
> ) to send the query. One of the failed example of mine,
>

I'd recommend using ecpg that comes with postgresql in the place of libpq
direct.  It is IMHO orders of magnitude easier than libpg alone.  The
syntax follows the same as Oracle's Pro*C so you can pretty much use any
of their manuals and get a working program.  I found an on-line copy of
the Pro*c manual at

http://www.dal.ca/%7eoracle/oradoc/DOC/api/doc/PC_22/toc.htm


With it you end up with something like the following in your code

    exec sql
      insert into customer(id,name_first,name_middle,name_last,company,
            address1,address2,city,state,country,zip,phone_work,
            phone_home,phone_fax,email,date_entered,billing_terms,
                           confirmation_method)
      values (:id,:name_first, :name_middle, :name_last,
              :company,:address1,:address2,
              :city,:state,:country,:zip,:phone_work,
              :phone_home,:phone_fax,:email,date('now'),
              :billing_terms,
              :confirmation_method);

the names preceeded by : are c variables.  The ecpg preprocessor replaces
this easily readable code with much nastier looking c code that does what
you require.

The author of the code is very responsive to few problem reports I have
sent him and has sent patches, or workarounds to me usually within 24
hours.

In the few cases you can't figure out a way to make something happen using
ecpg I believe you can mix the libpg and ecpg code in the same program.
The only place I could see a need for this is when you'd need the
functionality given by Pro*C's Dynamic SQL which ecpg doesn't yet support,
but I think its in the works.

You can find examples of ecpg code in the source tree
postgresql-6.4.2/src/interfaces/ecpg/test

>
> (3)  How to check who are the users in PostgreSQL system?
>

select * from pg_user;

->->->->->->->->->->->->->->->->->->---<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
James Thompson    138 Cardwell Hall  Manhattan, Ks   66506    785-532-0561
Kansas State University                          Department of Mathematics
->->->->->->->->->->->->->->->->->->---<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<






pgsql-interfaces by date:

Previous
From: hoelc
Date:
Subject: question on accessing PostgreSQL with C
Next
From: Dinesh Patil
Date:
Subject: help on libpq