#include #include #include "libpq-fe.h" void SmartQuit(PGconn *conn) { int stat = 0; if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "C> %s", PQerrorMessage(conn)); stat = 1; } PQfinish(conn); exit(stat); } int main(void) { PGconn *conn; PGresult *res; char *vcol0, *vcol1; int lcol0, lcol1; conn = PQconnectdb("dbname=test"); if (PQstatus(conn) != CONNECTION_OK) SmartQuit(conn); PQclear(PQexec(conn, "BEGIN;" "CREATE TEMP TABLE t_tmp (col0 text, col1 date);" "INSERT INTO t_tmp VALUES ('example text', now()::date)")); /* Give attention to ::text casting for date column. */ res = PQexecParams(conn, "SELECT col0, col1::text FROM t_tmp", 0, NULL, NULL, NULL, NULL, 1); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "R> %s", PQresultErrorMessage(res)); PQclear(res); SmartQuit(conn); } vcol0 = PQgetvalue(res, 0, 0); lcol0 = PQgetlength(res, 0, 0); vcol1 = PQgetvalue(res, 0, 1); lcol1 = PQgetlength(res, 0, 1); printf("(%d bytes) '%s'\n", lcol0, vcol0); printf("(%d bytes) '%s'\n", lcol1, vcol1); /* * (12 bytes) 'example text' * (10 bytes) '2005-12-27' */ PQclear(res); PQclear(PQexec(conn, "ROLLBACK")); PQfinish(conn); return 0; }