Re: trying to connect to PostgreSQL - Mailing list pgsql-novice
From | Phillip Smith |
---|---|
Subject | Re: trying to connect to PostgreSQL |
Date | |
Msg-id | 00cf01c77cbc$0b74d350$9b0014ac@wbaus090 Whole thread Raw |
In response to | trying to connect to PostgreSQL (kvnsmnsn@cs.byu.edu) |
List | pgsql-novice |
If I may ask, why are you trying to compile an individual file? If you are just trying to install the client, you can just do this: ./configure gmake gmake -C src/bin install gmake -C src/include install gmake -C src/interfaces install gmake -C doc install Cheers, ~p -----Original Message----- From: pgsql-novice-owner@postgresql.org [mailto:pgsql-novice-owner@postgresql.org] On Behalf Of kvnsmnsn@cs.byu.edu Sent: Wednesday, 11 April 2007 05:36 To: pgsql-novice@postgresql.org Subject: [NOVICE] trying to connect to PostgreSQL I'm a relative newcomer to PostgreSQL. I read the page on its website that explained how to connect, and I tried to compile the following example program. I located a "libpq-fe.h" at "/usr/include/pgsql" so I executed the command: cc -o pgsConnect -I/usr/include/pgsql pgsConnect.c I got a whole bunch of error messages listing a whole bunches of oc- currences of an "undefined reference to" some C function. I went through my local copy of "libpq-fe.h" and found references to each of those functions, but they were all declared "extern". Do I have to actually have those functions defined somewhere in order to get this code to compile? If so, how can I get them defined? The offending references were: PQstatus PQerrorMessage PQexec PQresultStatus PQclear PQnfields PQfname PQgetvalue PQntuples PQfinish And the code I used was: /* * testlibpq.c * * Test the C version of libpq, the PostgreSQL frontend library. */ #include <stdio.h> #include <stdlib.h> #include "libpq-fe.h" static void exit_nicely(PGconn *conn) { PQfinish(conn); 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=postgres and using * environment variables or defaults for all other connection parameters. */ if (argc > 1) conninfo = argv[1]; else conninfo = "dbname = 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"); 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); return 0; } ---Kevin Simonson "You'll never get to heaven, or even to LA, if you don't believe there's a way." from _Why Not_ ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match *******************Confidentiality and Privilege Notice******************* The material contained in this message is privileged and confidential to the addressee. If you are not the addressee indicated in this message or responsible for delivery of the message to such person, you may not copy or deliver this message to anyone, and you should destroy it and kindly notify the sender by reply email. Information in this message that does not relate to the official business of Weatherbeeta must be treated as neither given nor endorsed by Weatherbeeta. Weatherbeeta, its employees, contractors or associates shall not be liable for direct, indirect or consequential loss arising from transmission of this message or any attachments
pgsql-novice by date: