Acceso a MySQL desde código C++

Una de los problemas más complicados a la hora de crear código, según el lenguaje de programación, es la unión de un servicio con una base de datos que provea los datos. En un post anterior, se vio cómo realizarlo muy fácilmente con Ruby, en esta ocasión veremos cómo hacerlo también de forma sencilla con C++, usando librerías del propio sistema, para así poder trasladar el servicio a otros equipos, con la simple instalación de dichas librerías.
En el equipo de compilación será necesaria la instalación de la librería de desarrollo libmysql++-dev, mientras que en los restantes cliente que usen el código final, únicamente la librería. En sistemas debian/ubuntu, la instalación será,
shell> apt-get install libmysql++-dev
shell> apt-get install libmysql++3
Y para usar dichas funciones en nuestro programa, únicamente habrá que realizar el include correspondiente.
#include <mysql++/mysql++.h>

Un ejemplo de código simple que establece una conexión, obtiene la columna email de la tabla usuarios y cierra la conexión antes de terminar, es el que sigue.
/*Cliente MySQL C++*/
#define MYSQLPP_MYSQL_HEADERS_BURIED
#include <mysql++/mysql++.h>
#include <syslog.h>

int main (){
   mysqlpp::Connection conn(false);
   char db[]     = "DB";
   char server[] = "localhost";
   char user[]   = "USER";
   char pass[]   = "PASSWD";

   if (conn.connect(db, server, user, pass))
   {
      string consulta = "select email from users";
      mysqlpp::Query query = conn.query(consulta);
      if (mysqlpp::StoreQueryResult res = query.store())
      {
         if (res.num_rows() > 0)
            printf ("%s\n", (string)res[0][0]);
         syslog (LOG_DEBUG, "Failed to get list: %s", query.error());
      }
      conn.close();
   }
   else
      printf("Fallo al conectarse a la BD: %s\n", conn.error());
}
Y para compilarlo, partiendo de un Makefile,
CC = g++ <>
CFLAGS = -Wall -O2 -lmysqlpp
PROJ = prueba_mysql

all: prueba.cpp
 $(CC) $(CFLAGS) -o $(PROJ) prueba.cpp


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios