Leer datos MySQL desde C++ sobre Linux

Resulta que algunas veces es necesario acceder desde C/C++ a MySQL, razones hay muchas…. el asunto es como hacerlo.

Antes de hacer cualquier cosa debemos instalar las librerías de desarrollo de MySQL:

sudo apt-get install libmysqlclient-dev

Todos los archivos que necesitaremos van a estar ubicados en /usr/include/mysql y /usr/lib/mysql , los parámetros para compilar un archivo simple es como sigue:

gcc archivo.cpp \
           -o archivo \
           -I/usr/include/mysql -L/usr/lib/mysql \
           -lmysqlclient -lstdc++ -lz

Una breve descripción de los parámetros:

  • -o (output) indica el nombre que va a tener el archivo de resultado
  • -I le dice al compilador que incluya una ruta adicional para los archivos de inclusión
  • -L le dice al enlazador que incluya una ruta adicional para los archivos de librería dependientes
  • -l (ele minuscula) le dice al enlazador que incluya la librería especificada
  • \ es el caracter que usamos en la linea de comando para ejecutar varias lineas como una sola expresión.

Escribí para ustedes un código de ejemplo, no es gran cosa pero les va a dar luces para sus proyectos:

//conexion.cpp
#include 
#include 
#include 
 
using namespace std;
 
int main(int argc, char *argv[])
{
    MYSQL mysql;
 
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql
		,"localhost"
		,"root"
		,""
		,"ciudades",0,NULL,0))
    {
        cerr<<"Horror ! : "
	    <

El resultado de la ejecución es:

ivancp@ubuntu$ ./conexion
01 AMAZONAS
02 ANCASH
03 APURIMAC
04 AREQUIPA
05 AYACUCHO
06 CAJAMARCA
07 CALLAO
08 CUSCO
09 HUANCAVELICA
10 HUANUCO
11 ICA
12 JUNIN
13 LA LIBERTAD
14 LAMBAYEQUE
15 LIMA
16 LORETO
17 MADRE DE DIOS
18 MOQUEGUA
19 PASCO
20 PIURA
21 PUNO
22 SAN MARTIN
23 TACNA
24 TUMBES
25 UCAYALI

Espero les sirva mucho!

19 pensamientos en “Leer datos MySQL desde C++ sobre Linux

  1. Interesante tip, aunke hace buen tiempo que deje de programar aplicaciones de pc, ahora estoy mas embebido en aplicaciones web(php), pero tmb soy muy amante de tuxito, y por lo mismo, voy hacer la prueba.

    PD: de casualidad encontre tu blog (http://www.populicias.com/verNoticia.php?id=767&nv=20), estoy suscrito a ww.populicias.com y ahi estabas, jajaja, jajaj, y el copyright. De todos modos te agregue a mi lector web(www.bloglines.com), pues tienes algunos post muy inte interesantes, solo saludos. bye

  2. hola
    Deseaba hacer una coneccion pero usando c++ builder je luego descubri que no se podia por el tipo de formato como la hago sin usar odc o como incluyo la libreria mysql

  3. Muy bien! Justo lo que necesitaba… solamente tenía informacion sobre un programa bajo c pero no lo conseguia compilar en c++ utilizando mis clases. Gracias!

  4. #include
    #include

    std::string query(«SELECT * FROM maestro_departamentos»);

    mysql_real_query(&mysql, query.c_str(), query.size());

    Es la adaptacion para usar las librerias de C++.
    PD: si no se usa ‘using namespace std;’ al principio, hay que especificarlo antes de usar std::cout y std::cerr.

    Muchas gracias por el post, es muy claro y util. Saludos!

  5. Estoy buscando informacion acerca de como hacer la conexion y veo que es muy sencillo, pero podrias hacerlo mas paso a paso? por ejemplo desde crear los ficheros hasta la compilacion. No veo como hiciste la base de datos (aunque es sencilla, no se como la hiciste), tampoco como lo guardaste ni donde y documentar un poco mas el archivo .c Esta muy bien, solo que quienes no tenemos idea de como hacer la aplicacion y queremos saberlo nos volvemos un 8 Gracias!

  6. muy bueno pero tengo una pregunta ammmm, como haria con el comando para que me funcione en centos ya que si no me equiboco ese comando apt que estas usando para las librerias esta para ubunto me gustaria saber como podria poner el comando para descargar en centos gracias

        • mas bien una ultima pregunta ammm para activar las librerias ahora entonces como seria? o.o y por ejemplo si desearia conectar la base de datos remotamente de otro linux tendria que descargar otra libreria o con esa funciona?, porque para que funcione la conexion remota de la base de datos tendria que cambiar la parte del codigo que dice localhost por el ip o se le aumenta algo mas?.
          te doy muchas gracias de antemano.

          • Si!, solo tienes que poner el numero de IP del host remoto y tambien el usuario y password… pero el host remoto debe estar configurado para que acepte conexiones temotas via tcp

  7. Pingback: Probando UDFs para MySQL: Title Case | Fatal exception

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *