Re: Question Please

From: Aleksey Tsalolikhin <atsaloli(dot)tech(at)gmail(dot)com>
To: Gary Lapman <glapman(at)thermal(dot)com>
Cc: "lapug(at)postgresql(dot)org" <lapug(at)postgresql(dot)org>
Subject: Re: Question Please
Date: 2015-04-12 00:34:37
Message-ID: CA+jMWocxr5=PumWw_fdhiXvdLpw0Zr5WThK2fvBNbdmjhL4QLw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: lapug

Hi, Gary. I don't know the answer to your question. It might help if you
included the error message you got, if you got one?

Also, this PUG has been inactive recently. So if you don't get an answer
here, you can try the pgsql-novice mailing list (
http://www.postgresql.org/list/pgsql-novice/) They are very friendly and
helpful.

On Fri, Apr 10, 2015 at 4:03 PM, Gary Lapman <glapman(at)thermal(dot)com> wrote:

> I am a novice at interfacing a c program with Postgres. I have copied
> the first example program from the “*PostgreSQL 9.3.5 Documentation” *and
> am attempting to compile and link it in Visual Studio Express 2013. I have
> added a #include for “PostgreSQL\9.4\include\libpq-fe.h” and modified the
> configuration of the project to access the “PostgreSQL\9.4\lib”
> directory. It compiles correctly, but refuses to link. Any suggestions ?
>
>
>
> /*
>
> * testlibpq.c
>
> *
>
> * Test the C version of libpq, the PostgreSQL frontend library.
>
> */
>
> #include <stdio.h>
>
> #include <stdlib.h>
>
> #include "C:\Program Files\PostgreSQL\9.4\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;
>
> }
>
>
>
> *__________________*
>
>
>
> *Gary Lapman*
>
>
>
> *Seek Thermal, Inc.*
>
> 6489 Calle Real, Suite E
>
> Santa Barbara, Ca 93117
>
> glapman(at)thermal(dot)com
>
>
>
> +1.805.683.3300x102 Office
>
> +1.805.252.4609 Mobile
>
>
>

In response to

Browse lapug by date

  From Date Subject
Next Message Allen Lee 2017-03-14 23:46:20 LA-PUG Meetup Downtown April 5th!
Previous Message Gary Lapman 2015-04-10 23:03:01 Question Please