Author Topic: Postgresql 8.3.7 on Windows XP  (Read 5837 times)

Osvaldo

  • Guest
Postgresql 8.3.7 on Windows XP
« on: March 31, 2009, 04:47:58 am »
Hello.
I work on Windows XP and I am trying run a program "c" compiled under Code::Blocks 8.02, to access POSTGRESQL 8.3.7 (the source is below and is an example of DEV-C++). 
Anyone can tell me how I should to configure my Project for compile & link?
Thank in advance...
 
/*
* testlibpq.c
*
*   Test the C version of LIBPQ, the POSTGRES frontend library.
*/
#include <stdio.h>
#include <stdlib.h>
#include "libpq-fe.h"
static void
exit_nicely(PGconn *conn)
{
       PQfinish(conn);
       system("PAUSE");/* I added this for Dev-CPP */
       exit(1);
}
int
main(int argc, char **argv)
{
       const char *conninfo;
       PGconn     *conn;
       PGresult   *res;
       int                     nFields;
       int                     i,
                               j;
       /*
        * If the user supplies a parameter on the command line, use it as
* the conninfo string; otherwise default to setting dbname=template1 * and using environment variables or defaults for all other connection
        * parameters.
        */
       if (argc > 1)
               conninfo = argv[1];
       else
conninfo = "hostaddr = 127.0.0.1 dbname = template1 user = postgres password = postgres"; //conninfo = "hostaddr = 127.0.0.1 dbname = test user = postgres password = postgres";
       /* Make a connection to the database */
       conn = PQconnectdb(conninfo);
       /* Check to see that the backend connection was successfully made */
       if (PQstatus(conn) != CONNECTION_OK)
       {
               fprintf(stderr, "Connection to database failed: %s",
                       PQerrorMessage(conn));
               exit_nicely(conn);
       }
       /*
        * Our test case here involves using a cursor, for which we must be
        * inside a transaction block.  We could do the whole thing with a
        * single PQexec() of "select * from pg_database", but that's too
        * trivial to make a good example.
        */
       /* Start a transaction block */
       res = PQexec(conn, "BEGIN");
       if (PQresultStatus(res) != PGRES_COMMAND_OK)
       {
fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
               PQclear(res);
               exit_nicely(conn);
       }
       /*
        * Should PQclear PGresult whenever it is no longer needed to avoid
        * memory leaks
        */
       PQclear(res);
       /*
        * Fetch rows from pg_database, the system catalog of databases
        */
res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database"); //res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from test_table");
       if (PQresultStatus(res) != PGRES_COMMAND_OK)
       {
fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
               PQclear(res);
               exit_nicely(conn);
       }
       PQclear(res);
       res = PQexec(conn, "FETCH ALL in myportal");
       if (PQresultStatus(res) != PGRES_TUPLES_OK)
       {
fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
               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 portal ... we don't bother to check for errors ... */
       res = PQexec(conn, "CLOSE myportal");
       PQclear(res);
       /* end the transaction */
       res = PQexec(conn, "END");
       PQclear(res);
       /* close the connection to the database and cleanup */
       PQfinish(conn);
system("PAUSE"); /* I added this for Dev-CPP */
       return 0;
}


Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Postgresql 8.3.7 on Windows XP
« Reply #1 on: March 31, 2009, 06:47:48 am »
The special problem (Postgresql) is not related to C::B, the common problem (including headers and linking libs) is answered many times.

Topic locked !