PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : C et C++ » Utilisation d'un Select » 14/04/2009 21:48:44

Bonjour à tous,

je souhaite maintenant lire le contenu de mon res.
Imaginons maintenant que ma requête soit:

SELECT \"Nom\" FROM  \"public\".\"Compte\";

Sachant que Nom est du Type text, comment puis-je récupérer le résultat de la requête,
Enfin, je vais accompagner ma demande d'une petite suggestion, je trouve que la documentation ne comporte pas assez d'exemples concrets ou ne sont pas suffisamment développés|commentés.

Merci de vos prochaines réponses!

#3 C et C++ » Utilisation d'un Select » 22/03/2009 16:46:24

O-neill
Réponses : 5

Bonjour,

Je découvre actuellement la libpq et essaye de l'utiliser,
J'ai modifié un des exemples de la documentation pour faire un test mais voilà ce qu'il donne:

Commande incorrecte:

qui doit normalement être suivi de l'explication de l'erreur.
Voici mon code:

#include <stdio.h>
#include <stdlib.h>
#include <postgresql/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;

    /*
     * 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.
     */
        conninfo = "hostaddr = '127.0.0.1' dbname = 'Serveur_Atlantis' user = 'MyUser' password = 'MonMDP'";

    /* 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 à la base de donnée échouée: %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, "SELECT * FROM  \"public\".\"Compte\";");
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        fprintf(stderr, "Commande incorrecte: %s", PQerrorMessage(conn));
        PQclear(res);
        exit_nicely(conn);
    }

    /*
     * Should PQclear PGresult whenever it is no longer needed to avoid memory
     * leaks
     */
    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;
}

Merci pour prochaines réponses.

Pied de page des forums

Propulsé par FluxBB