Search Postgresql Archives

Unable to run testlibpq.c program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;
 
 }

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux