Buscar en moleculax
Conexión de un programa en C++ con 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;
// para compilar: g++ conect.cpp -o connPgSQL -Wall -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -lpq

#include  iostream   //colocar  < >
#include /usr/include/postgresql/libpq-fe.h 

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

const char *host = "localhost";
const char *port = "5432";
const char *dataBase = "bd_uecam";
const char *user = "admin";
const char *passwd = "admin123";

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 UPPER(nombre) FROM tbl_alumnos");

        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                cout << PQfname(result,i) << " | ";
            }

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

            for (i=0; i                for (int j=0; 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, desde la consola escribimos lo siguiente:

#g++ connPgSQL.cpp -o connPgSQL -Wall -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -lpq
 
Como podemos observar ocupamos el compilador GCC (g++) ya que se trata de un programa escrito en C++:
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.htm

.


Powered by

http://emiliogomez.com.ar