Same Program in C
#include <stdio.h>
#include "libpq-fe.h"
void
exit_nicely(PGconn * conn)
{
PQfinish(conn);
exit(1);
}
int main()
{
char * pghost, * pgport, * pgoptions, * pgtty;
char * dbName;
char name[256];
int i, num_records;
PGconn * conn;
PGresult * res;
pghost = NULL;
pgport = NULL;
pgoptions = NULL;
pgtty = NULL;
dbName = "test";
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
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, "SET DateStyle = 'European'");
if ((!res) || (PQresultStatus(res) != PGRES_COMMAND_OK))
{
fprintf(stderr, "SET command failed\n");
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
res = PQexec(conn,
"SELECT first_name, last_name, hired_at"
" FROM employees"
" ORDER BY last_name, first_name"
);
if ((!res) || (PQresultStatus(res) != PGRES_TUPLES_OK))
{
fprintf(stderr, "SELECT command did not return tuples properly\n");
PQclear(res);
exit_nicely(conn);
}
printf("%-40s%-20s\n", "Name:", "Hired At:");
for(i=0;i<60;i++)
{
printf("-");
}
printf("\n");
num_records = PQntuples(res);
for(i = 0 ; i < num_records ; i++)
{
sprintf(name, "%s %s", PQgetvalue(res, i, 0), PQgetvalue(res, i, 1));
printf("%-40s%-20s\n", name, PQgetvalue(res, i, 2));
}
PQclear(res);
PQfinish(conn);
return 0;
}