Re: libpq Newbie question - Mailing list pgsql-general
From | Tim Barnard |
---|---|
Subject | Re: libpq Newbie question |
Date | |
Msg-id | 007b01c17c29$a4fc8340$a519af3f@hartcomm.com Whole thread Raw |
In response to | libpq Newbie question ("Ronggolawe" <ngelawak@space.com.invalide>) |
List | pgsql-general |
Oops, fat fingered that one :-( Make that -L/usr/local/pgsql/lib -lpq Tim ----- Original Message ----- From: "Ronggolawe" <ngelawak@www2.us.postgresql.org> To: <pgsql-general@postgresql.org.pgsql-interfaces@postgresql.org> Sent: Thursday, November 29, 2001 10:34 PM Subject: [GENERAL] libpq Newbie question > Hi, I'm a newbie in postgresql, would like to know how to access database > using libpq. I found example code on postgresql's site, however i'm not able > to execute the code it always giving me an error. > I hope anyone could explain to me how to fix this. > Thank you. > > Error: > Undefined first referenced > symbol in file > PQresultStatus /var/tmp/ccED8fcw.o > PQclear /var/tmp/ccED8fcw.o > PQexec /var/tmp/ccED8fcw.o > PQerrorMessage /var/tmp/ccED8fcw.o > PQstatus /var/tmp/ccED8fcw.o > PQconsumeInput /var/tmp/ccED8fcw.o > PQnotifies /var/tmp/ccED8fcw.o > PQfinish /var/tmp/ccED8fcw.o > PQsetdbLogin /var/tmp/ccED8fcw.o > ld: fatal: Symbol referencing errors. No output written to a.out > collect2: ld returned 1 exit status > > The code: > /* > * testlibpq2.c > * Test of the asynchronous notification interface > * > * Start this program, then from psql in another window do > * NOTIFY TBL2; > * > * Or, if you want to get fancy, try this: > * Populate a database with the following: > * > * CREATE TABLE TBL1 (i int4); > * > * CREATE TABLE TBL2 (i int4); > * > * CREATE RULE r1 AS ON INSERT TO TBL1 DO > * (INSERT INTO TBL2 values (new.i); NOTIFY TBL2); > * > * and do > * > * INSERT INTO TBL1 values (10); > * > */ > #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; > PGconn *conn; > PGresult *res; > PGnotify *notify; > /* > * 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 = getenv("USER"); /* change this to the name of your test > * database */ > /* 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); > } > res = PQexec(conn, "LISTEN TBL2"); > if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) > { > fprintf(stderr, "LISTEN command failed\n"); > PQclear(res); > exit_nicely(conn); > } > /* > * should PQclear PGresult whenever it is no longer needed to avoid > * memory leaks > */ > PQclear(res); > while (1) > { > /* > * wait a little bit between checks; waiting with select() > * would be more efficient. > */ > sleep(1); > /* collect any asynchronous backend messages */ > PQconsumeInput(conn); > /* check for asynchronous notify messages */ > while ((notify = PQnotifies(conn)) != NULL) > { > fprintf(stderr, > "ASYNC NOTIFY of '%s' from backend pid '%d' received\n", > notify->relname, notify->be_pid); > free(notify); > } > } > /* close the connection to the database and cleanup */ > PQfinish(conn); > return 0; > } > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > >
pgsql-general by date: