Conexión de un programa en C++ con una DB PostgreSQL

En esta ocasión quiero compartir con ustedes un pequeño programa escrito en C++ sumamente sencillo, el cual establece una conexión al servidor de DB PostgreSQL y realiza una consulta a los datos almacenados en una tabla, además de que muestra en consola un poco mas de información.

using namespace std;
#include <iostream>
#include <libpq-fe.h>

PGconn *cnn = NULL;
PGresult *result = NULL;

char *host = "localhost";
char *port = "5432";
char *dataBase = "DataBase";
char *user = "postgres";
char *passwd = "password";

int main(int argc, char * argv[])
{
    int i;

    cnn = PQsetdbLogin(host,port,NULL,NULL,dataBase,user,passwd);

    if (PQstatus(cnn) != CONNECTION_BAD) {
        cout << "Estamos conectados a PostgreSQL!" << endl;
        result = PQexec(cnn, "SELECT * FROM nombre_tabla");

        if (result != NULL) {
            int tuplas = PQntuples(result);
            int campos = PQnfields(result);
            cout << "No. Filas:" << tuplas << endl;
            cout << "No. Campos:" << campos << endl;

            cout << "Los nombres de los campos son:" << endl;

            for (i=0; i<campos; i++) {
                cout << PQfname(result,i) << " | ";
            }

            cout << endl << "Contenido de la tabla" << endl;

            for (i=0; i<tuplas; i++) {
                for (int j=0; j<campos; j++) {
                    cout << PQgetvalue(result,i,j) << " | ";
                }
                cout << endl;
            }
        }

        // Ahora nos toca liberar la memoria
        PQclear(result);

    } else {
        cout << "Error de conexion" << endl;
        return 0;
    }

    PQfinish(cnn);

    return 0;
}

Para establecer la conexion con la Base de Datos nos apoyamos en libpq, la cual es un conjunto de librerias escritas en C que permite a un programa cliente enviarle consultas al servidor de PostgreSQL y recibir el resultado de éstas.

Como podemos observar se ha incluido en la cabecera del programa el archivo libpq-fe.h, el cual es el encargado de incluir las librerias de libpq.

Para compilar el programa con GCC (g++), desde la consola escribe lo siguiente:

$ g++ connPgSQL.cpp -o connPgSQL -Wall -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -lpq

Donde:

connPgSQL.cpp es el nombre del archivo fuente .

-o connPgSQL le indica al compilador que genere un archivo ejecutable llamado connPgSQL.

-I/ruta indicamos el path donde se encuentran los archivos que estamos incluyendo en el programa fuente.

-L/ruta especifica la ruta del directorio donde el compilador va a buscar los archivos de biblioteca.

-Wall le indicamos que nos muestre en pantalla todos los posibles advertencias que se producen durante el proceso de compilación.

-lpq con esta opción le indicamos al “linker” ld que localize y utilice las librerias necesarias para el programa.

Fuentes:

http://gcc.gnu.org/
http://www.postgresql.org/docs/8.2/interactive/libpq.html

Acerca de Moycas
Developer Web @moycc

3 Responses to Conexión de un programa en C++ con una DB PostgreSQL

  1. Boi dice:

    Hola, muy bueno tu código, lo probé y funciona perfectamente. Solo tengo una duda, puedes poner un ejemplo de como insertar datos en una tabla desde c++ hacia postgresql??

    Gracias desde ya, saludos!

    • microbuffer dice:

      Hola Boi gracias por tus comentarios, me alegra que te hayan servido estas lineas de código, respondiendo a tu pregunta de manera rápida se me ocurre algo asi como:

      char query[256];
      sprintf(query,”INSERT INTO tabla (col1,col2) VALUES(%d,’%s’);”,var1, var2);
      result = PQexec(cnn, query);

      Saludos…

  2. Boi dice:

    Hola, gracias por tu respuesta. Probare así como me dices, ya te informo del resultado.

    Gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: