News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

Postgresql 8.3.7 on Windows XP

Started by Osvaldo, March 31, 2009, 04:47:58 AM

Previous topic - Next topic

Osvaldo

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


Jenna

The special problem (Postgresql) is not related to C::B, the common problem (including headers and linking libs) is answered many times.

Topic locked !