From: | "Dale Anderson" <danderso(at)crystalsugar(dot)com> |
---|---|
To: | <pgsql-general(at)postgreSQL(dot)org> |
Subject: | PGSQL C Interface |
Date: | 1999-11-30 15:00:55 |
Message-ID: | s843925a.014@crystalsugar.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
When compiling the test C program for Postgres, I get the following errors. Can anyone help me with what the error might be. I have included th error message when compiling, and the source code ofr the tes.
Thanks in advance,
Dale.
$ gcc -I/usr/include/pgsql dba.c -o dba
/tmp/cca257351.o: In function `exit_nicely':
/tmp/cca257351.o(.text+0x8): undefined reference to `PQfinish'
/tmp/cca257351.o: In function `main':
/tmp/cca257351.o(.text+0x62): undefined reference to `PQsetdbLogin'
/tmp/cca257351.o(.text+0x73): undefined reference to `PQstatus'
/tmp/cca257351.o(.text+0x9c): undefined reference to `PQerrorMessage'
/tmp/cca257351.o(.text+0xce): undefined reference to `PQexec'
/tmp/cca257351.o(.text+0xe5): undefined reference to `PQresultStatus'
/tmp/cca257351.o(.text+0x10f): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x127): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x138): undefined reference to `PQexec'
/tmp/cca257351.o(.text+0x14f): undefined reference to `PQresultStatus'
/tmp/cca257351.o(.text+0x177): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x18f): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x1a0): undefined reference to `PQexec'
/tmp/cca257351.o(.text+0x1b7): undefined reference to `PQresultStatus'
/tmp/cca257351.o(.text+0x1df): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x1f7): undefined reference to `PQnfields'
/tmp/cca257351.o(.text+0x21d): undefined reference to `PQfname'
/tmp/cca257351.o(.text+0x255): undefined reference to `PQntuples'
/tmp/cca257351.o(.text+0x289): undefined reference to `PQgetvalue'
/tmp/cca257351.o(.text+0x2c1): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x2d2): undefined reference to `PQexec'
/tmp/cca257351.o(.text+0x2e3): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x2f4): undefined reference to `PQexec'
/tmp/cca257351.o(.text+0x305): undefined reference to `PQclear'
/tmp/cca257351.o(.text+0x311): undefined reference to `PQfinish'
―---------------[ CODE ]------------------------------------------------------------
/*
* testlibpq.c Test the C version of Libpq, the Postgres frontend
* library.
*
*
*/
#include <stdio.h>
#include "/usr/include/pgsql/postgres.h"
#include "/usr/include/pgsql/libpq-fe.h"
#include "/usr/include/pgsql/libpq/pqcomm.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 = "ff";
/* 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 instances 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 instances */
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); */
}
From | Date | Subject | |
---|---|---|---|
Next Message | Karel Zak - Zakkr | 1999-11-30 15:32:43 | Re: [GENERAL] PGSQL C Interface |
Previous Message | Peter Eisentraut | 1999-11-30 15:00:23 | Re: [GENERAL] Executing external scripts |