Unable to run testlibpq.c program - Mailing list pgsql-general

From vikram_147@yahoo.com (Vikram)
Subject Unable to run testlibpq.c program
Date
Msg-id b890008e.0405191841.636a7ec6@posting.google.com
Whole thread Raw
Responses Re: Unable to run testlibpq.c program
List pgsql-general
Hello All,
           Im novice to Postgres ,Im trying to program in 'libpq the C
application programmer's interface to PostgreSQL'
I was trying to  execute sample 'testlibpq.c'.

I did the following......





#su postgres(enter)

(bash#)createdb sampledb
(bash#)psql sampledb

(sampledb#)create table sirisha (name varchar(20),city varchar(20));
(sampledb#)insert into sirisha(name,city) values('Vikram','Toronto');
(sampledb#)\q

(bash#)gcc -I/usr/include/pgsql sirisha_retrieve.c -o output2 -lpq
(enter)

/usr/bin/ld: cannot open output file output2: Permission denied
collect2: ld returned 1 exit status

What does the above message signify? I tried to run the program as
root still the same prob ?
What is the problem?


Thanks in advance ......

Vikram.


*********Source Code is as follows.*********************


*
  * testlibpq.c
  *
  * Test the C version of libpq, the PostgreSQL frontend
  * library.
  */
 #include <stdio.h>
 #include <libpq-fe.h>

 void
 exit_nicely(PGconn *conn)
 {
     PQfinish(conn);
     exit(1);
 }

 main()
 {
     char       *pghost,
                *pgport,
                *pgoptions,
                *pgtty;
     char       *dbName;
     int         nFields;
     int         i,
                 j;

     /* FILE *debug; */

     PGconn     *conn;
     PGresult   *res;

     /*
      * begin, by setting the parameters for a backend connection if
the
      * parameters are null, then the system will try to use
reasonable
      * defaults by looking up environment variables or, failing that,
      * using hardwired constants
      */
     pghost = NULL;              /* host name of the backend server */
     pgport = NULL;              /* port of the backend server */
     pgoptions = NULL;           /* special options to start up the
backend
                                  * server */
     pgtty = NULL;               /* debugging tty for the backend
server */
     dbName = "template1";

     /* make a connection to the database */
     conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);

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

     /* debug = fopen("/tmp/trace.out","w"); */
     /* PQtrace(conn, debug);  */

     /* start a transaction block */
     res = PQexec(conn, "BEGIN");
     if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
     {
         fprintf(stderr, "BEGIN command failed\n");
         PQclear(res);
         exit_nicely(conn);
     }

     /*
      * should PQclear PGresult whenever it is no longer needed to
avoid
      * memory leaks
      */
     PQclear(res);

     /*
      * fetch rows from the pg_database, the system catalog of
      * databases
      */
     res = PQexec(conn, "DECLARE mycursor CURSOR FOR SELECT * FROM
pg_database");
     if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
     {
         fprintf(stderr, "DECLARE CURSOR command failed\n");
         PQclear(res);
         exit_nicely(conn);
     }
     PQclear(res);
     res = PQexec(conn, "FETCH ALL in mycursor");
     if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
     {
         fprintf(stderr, "FETCH ALL command didn't return tuples
properly\n");
         PQclear(res);
         exit_nicely(conn);
     }

     /* first, print out the attribute names */
     nFields = PQnfields(res);
     for (i = 0; i < nFields; i++)
         printf("%-15s", PQfname(res, i));
     printf("\n\n");

     /* next, print out the rows */
     for (i = 0; i < PQntuples(res); i++)
     {
         for (j = 0; j < nFields; j++)
             printf("%-15s", PQgetvalue(res, i, j));
         printf("\n");
     }
     PQclear(res);

     /* close the cursor */
     res = PQexec(conn, "CLOSE mycursor");
     PQclear(res);

     /* commit the transaction */
     res = PQexec(conn, "COMMIT");
     PQclear(res);

     /* close the connection to the database and cleanup */
     PQfinish(conn);

     /* fclose(debug); */
     return 0;

 }

pgsql-general by date:

Previous
From: Nathan Schile
Date:
Subject: Truncating 'now' to seconds
Next
From: Brendan Jurd
Date:
Subject: Data change logs