http://www-128.ibm.com/developerworks/cn/linux/l-pgsql/index.html
可以看下上面例子,其中连接数据库的部分也可以这样(因为数据库权限设置不同,有的需要用户名密码才能访问库,如果完全信任关系按给的例子就行了):
   PGconn *conn;
   PGresult *res, *res1, *res2;
   char *pghost = "localhost";
   char *pgport ="5432";
   char *pgoptions =NULL;
   char *pgtty = NULL;
   char *dbname ="testdb";
   char *login = "test";
   char *pwd = "123456";建立连接就可以:
conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);
conn = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName, login, pwd);

解决方案 »

  1.   

    参看www.pgsqldb.org网站上的文档/客户端编程
    需要链接libpq库,应包含头文件include/libpq-fe.h
    路径要看你具体将postgresql安装在哪里啦
    给你一个具体例子吧(从www.pgsqldb.org上copy的)!!!
    #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;    /* 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 = "template1";    /* 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 rows 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 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 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); */
        return 0;}