miércoles, 17 de junio de 2015

39 - Tutorial de C++ en español - Dev-C++ MySQL




En esta parte del tutorial de C++ veremos como conectar y realizar consultas a bases de datos MySQL en el entorno Dev-C++.

Para ello es requisito instalar la siguiente librería: libmysql-5.0.5-1sid.rar

Únicamente es necesario ejecutar el archivo y os aparecerá una ventana de instalación de librerías de Dev-C++, seguir los pasos de la instalación hasta el final.

Ahora cada vez que se crea un proyecto para trabajar con MySQL es necesario incluir las siguientes cabeceras:

#include <winsock2.h>
#include <mysql/mysql.h>
#include <mysql/mysqld_error.h>  

Y otra cosa muy importante es agregar en Proyecto-Opciones del Proyecto-Parámetros-Linker el siguiente argumento: -lmysql

En el programa de ejemplo vamos a realizar un test en una base de datos MySQL para seleccionar todos los registros de una tabla.

Código de ejemplo para la selección de registros ...


#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <winsock2.h>
#include <mysql/mysql.h>
#include <mysql/mysqld_error.h> 

using namespace std;

int main(int argc, char *argv[])
{
    
    MYSQL * _mysql;
     
    /* Intentar iniciar un objeto MySQL */
    if(!(_mysql = mysql_init(0))) 
    {
     cout << "Error al crear el objeto mysql" << endl;
    }
    else
    {
      cout << "Objeto mysql creado correctamente, conectando ..." << endl;
      /* Intentar conectar al servidor mysql */
      if(!mysql_real_connect(_mysql, "localhost", "root", "password", "testdb", 3306, NULL, 0))
      {
         cout << "No es posible conectar al servidor" << endl;                              
      }
      else
      {
        cout << "Conectado al servidor ..." << endl; 
        
        /* Ejecutar una consulta de selección en una tabla de la base de datos */
        
        const char * sql = "SELECT * FROM test";
        int query = mysql_query(_mysql, sql);
        
        /* Si ha ocurrido un error al realizar la consulta */
        /* Si la consulta es correcta regresa 0 */
        if (query != 0)
        {
          cout << "Ha ocurrido un error al realizar la consulta" << endl;      
        }
        else
        {
          cout << "Consulta correcta, extrayendo filas ..." << endl;
          /* Obteniendo el resultado de la consulta */  
          MYSQL_RES * resultado = mysql_store_result(_mysql);
          /* Obteniendo el número de filas afectadas */
          unsigned long filas_afectadas = mysql_num_rows(resultado);
          cout << "Filas afectadas: " << filas_afectadas << endl;
          /* Recorrer fila a fila */
          MYSQL_ROW fila;
          for (int x = 0; x < filas_afectadas; x++)
          {
              //Obtenemos la fila
              fila = mysql_fetch_row(resultado);
              //Mostrando el valor de los campos de la fila
              cout << fila[0] << fila[1] << fila[2] << endl;
          }
          // Liberar el resultado de la consulta
          mysql_free_result(resultado);
        } 
        
        /* Cerrar la conexión al servidor */
        mysql_close(_mysql); 
      }
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



2 comentarios:

Anónimo dijo...

Hola, tengo un problema a la hora de instalar las librerias, me dice que algunos archivos no se encuentran (de hecho, ninguno de los archivos se encuentran donde deberian). Que puedo hacer?

Anónimo dijo...

ami me sale lo mismo que no encuentra los directorios mysql/mysql.h
ayuda porfavor :(