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, 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.html