Cool C/C++

Programacion en C/C++

Home Tutoriales Programación C/C++ MySQL con Dev-C++ - Proyecto de prueba en Dev-C++
MySQL con Dev-C++ - Proyecto de prueba en Dev-C++ PDF Imprimir E-mail
Escrito por adrianvaca   
Domingo, 20 de Marzo de 2011 19:46
Indice del artículo
MySQL con Dev-C++
Instalación de MySQL
Instalación de MySQL-Front
Instalación de la librería para interacción con MySQL
Funciones básicas para interacción con MySQL
Proyecto de prueba en Dev-C++
Inserción, Actualización y eliminación de datos (Sistema de altas y bajas)
Todas las páginas


Bien, ahora que sabemos las funciones básicas que nos permiten acceder a MySQL, podemos crear nuestro proyecto en Dev-C++, pero primero vamos a crear una base de datos para pruebas, la cual tendrá una tabla y 3 registros para poder jugar con ellos.

Creación de la base de prueba


  1. Abrimos el MySQL-Front y se nos presenta la ventana:



    Damos click en abrir para poder ingresar, si nos pide la clave la ingresamos.


  2. Una vez que ingresemos damos click sobre el botón Editor SQL para que se despliegue una ventana de comandos en la cual podamos ejecutar instrucciones SQL.

    En dicha ventana pegamos el siguiente código:

    CREATE DATABASE base_ejemplo;

    USE base_ejemplo;

    CREATE TABLE personas (
      id int(3) NOT NULL auto_increment,
      nombre varchar(20) default NULL,
      apellido varchar(20) default NULL,
      edad int(3) NOT NULL default '0',
      direccion varchar(40) default NULL,
      PRIMARY KEY  (id)
    ) AUTO_INCREMENT=1 ;

    INSERT INTO personas(nombre, apellido, edad, direccion) VALUES('adrian', 'vaca', 25, 'Santiago 222');
    INSERT INTO personas(nombre, apellido, edad, direccion) VALUES('karla', 'aguirre', 26, 'Ventimilla y 6 de diciembre');
    INSERT INTO personas(nombre, apellido, edad, direccion) VALUES('pedro', 'vela', 48, '10 de Agosto y Guevara');

    SELECT * FROM personas;


    Y se nos presenta la siguiente ventana:



Bien lo que hemos hecho aquí es lo siguiente:


  • Creamos una base de nombre base_ejemplo con la sentencia CREATE DATABASE

  • Con USE base_ejemplo establecemos la base base_ejemplo como la base actual ya que en esta vamos a ejecutar los comandos a continuación.

  • Con CREATE TABLE personas creamos una tabla cuyo nombre es personas que tienen las columnas especificadas.

  • Luego insertamos 3 registros en dicha tabla. Fíjense que no mencionamos a la columna id debido a que cuando definimos dicha columna al crear la tabla le pusimos el atributo auto_increment con lo cual el valor de la columna será incrementada en forma automática en 1.

  • Con SELECT * FROM personas
  • seleccionamos todos los registros de la tabla personas y los resultados se muestran en la parte inferior de la pantalla.


Bien hemos terminado esta parte.



Creación del proyecto con Dev-C++

Los pasos como siempre son los siguientes:


  1. Abrimos el Dev-C++, vamos a Archivo -> Nuevo -> Proyecto, en la pestaña Basic seleccionamos Console Application y el nombre del proyecto será PruebaMySQL



    Guardamos el archivo del proyecto.


  2. Vamos a Proyecto -> Opciones del proyecto -> Parámetros y en el cuadro Linker, escribimos -lmysql tal como se muestra a continuación:



  3. Ahora reemplazamos el código de la ventana por el siguiente:

    /*
      Name: main.cpp
      Author: Salvador Pozo Coronado, Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
      Date: 07/05/2005
      Description: Ejemplo para mostrar contenidos de bases de datos
      usando MySQL.
    */

    // Includes...
    #include <iostream>
    #include <windows.h>
    #include <mysql/mysql.h>
    #include <mysql/mysqld_error.h>
    #include <cstring>
    #include <cstdio>

    using namespace std;

    // Programa principal
    int main()
    {
       // Variables
       MYSQL           *objDatos;
       MYSQL_RES       *res;
       MYSQL_ROW        row;
       MYSQL_FIELD     *columna;
       int              i, j, k, l;
       unsigned long   *lon;
       MYSQL_ROW_OFFSET pos;

       // Intentar iniciar MySQL:
       if(!(objDatos = mysql_init(0))) {
          // Imposible crear el objeto objDatos
          cout << "ERROR: imposible crear el objeto objDatos." << endl;
          rewind(stdin);
          getchar();
          return 1;
       }

       // Debe existir un usuario "root" con clave de acceso "clave"
       if(!mysql_real_connect(objDatos, NULL, "root", "clave", "base_ejemplo", MYSQL_PORT, NULL, 0)) {
          // No se puede conectar con el servidor en el puerto especificado.
          cout << "Imposible conectar con servidor mysql en el puerto "
               << MYSQL_PORT << " Error: " << mysql_error(objDatos) << endl;
          mysql_close(objDatos);
          rewind(stdin);
          getchar();
          return 1;
       }

       // Conectar a base de datos.
       if(mysql_select_db(objDatos, "base_ejemplo")) {
          // Imposible seleccionar la base de datos, posiblemente no existe.
          cout << "ERROR: " << mysql_error(objDatos) << endl;
          mysql_close(objDatos);
          rewind(stdin);
          getchar();
          return 2;
       }
     
       // Hacer una consulta con el comando "SELECT * FROM personas":
       if(mysql_query(objDatos, "SELECT * FROM personas")) {
          // Error al realizar la consulta:
          cout << "ERROR: " <<  mysql_error(objDatos) << endl;
          mysql_close(objDatos);
          rewind(stdin);
          getchar();
          return 2;
       }

       // Almacenar el resultado de la consulta:
       if((res = mysql_store_result(objDatos))) {
          // Obtener el número de registros seleccionados:
          i = (int) mysql_num_rows(res);
          // Obtener el número de columnsa por fila:
          j = (int) mysql_num_fields(res);

          // Mostrar el número de registros seleccionados:
          cout << "Consulta:  SELECT * FROM personas" << endl;
          cout << "Numero de filas encontradas:  " << i << endl;
          cout << "Numero de columnas por fila:  " << j << endl;
     
          // Información sobre columnas usando mysql_fetch_field:
          cout << endl << "Informacion sobre columnas:" << endl;
          for(l = 0; l < j; l++) {
             columna = mysql_fetch_field(res);
             cout << "Nombre: " << columna->name << endl;
             cout << "Longitud: " << columna->length << endl;
             cout << "Valor por defecto: " << (columna->def ? columna->def : "NULL") << endl;
          }
          cout << endl;

          // Información sobre columnas usando mysql_fetch_fields:
          cout << endl << "Informacion sobre columnas:" << endl;
          columna = mysql_fetch_fields(res);
          for(l = 0; l < j; l++) {
             cout << "Nombre: " << columna[l].name << endl;
             cout << "Longitud: " << columna[l].length << endl;
             cout << "Valor por defecto: " << (columna[l].def ? columna[l].def : "NULL") << endl;
          }
          cout << endl;

          // Información sobre columnas n, usando mysql_fetch_field_direct:
          cout << endl << "Informacion sobre columna 1:" << endl;
          columna = mysql_fetch_field_direct(res, 1);
          cout << "Nombre: " << columna->name << endl;
          cout << "Longitud: " << columna->length << endl;
          cout << "Valor por defecto: " << (columna->def ? columna->def : "NULL") << endl;
          cout << endl;

          // Leer registro a registro y mostrar:
          l=1;
          for(l = 0; l < i; l++) {
             row = mysql_fetch_row(res);
             lon = mysql_fetch_lengths(res);
             cout << endl << "Registro no. " << l+1 << endl;
             // Mostrar cada campo y su longitud:
             for(k = 0 ; k < j ; k++) {
                cout << ((row[k]==NULL) ? "NULL" : row[k]);
                cout << " longitud: " << lon[k] << endl;
             }
          }
         
          cout << endl;
         
          // Mostrar sólo 3ª fila:
          mysql_data_seek(res, 2);
          row = mysql_fetch_row(res);
          cout << "Tercera fila" << endl;
          for(k = 0 ; k < j ; k++) {
             cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
          }

          // Liberar el resultado de la consulta:
          mysql_free_result(res);
       }
       
       // El mismo proceso usando mysql_use_result:
       // Hacer una consulta con el comando "SELECT * FROM personas":
       if(mysql_query(objDatos, "SELECT * FROM personas")) {
          // Error al realizar la consulta:
          cout << "ERROR: " <<  mysql_error(objDatos) << endl;
          mysql_close(objDatos);
          rewind(stdin);
          getchar();
          return 2;
       }
       
       // Mostrar todas las filas:
       if((res = mysql_use_result(objDatos))) {     
          j = (int) mysql_num_fields(res);
          cout << endl << endl << "Mostrando filas usando: mysql_use_result";
          while(row = mysql_fetch_row(res)) {
             for(k = 0 ; k < j ; k++)
                cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
          }

          // Liberar el resultado de la consulta:
          mysql_free_result(res);
       }
       
       // Cerrar la conexión
       mysql_close(objDatos);
       
       // Esperar a que se pulse una tecla y salir.
       rewind(stdin);
       getchar();
       return 0;
    }


    Tomar en cuenta que se debe reeplazar la palabra clave por la contraseña real del usuario root.

    Presionamos CTRL+S para guardar el archivo mostrado (main.cpp)


  4. Presionamos CTRL+F9 para compilar el programa y CTRL+F10 para ejecutarlo. El resultado será entonces mostrado en pantalla:









Deben revisar bien el código fuente y comprenderlo, aquí se trata lo escencial de operaciones con MySQL desde C++




 
Otros artículos

Comentarios  

 
0 #3 Roberto Carlos Silva Orozco 29-02-2020 19:44
Cito a may:
Hola, Buenas tardes.
Tengo problemas con el #include de mysql, me dice que no encuentra el archivo ni el directorio y ya hice todo lo que se tenia que hacer.
Espero y puedan ayudarme, gracias.

Justo tuve ese problema, debes de incluir en tu proyecto en la parte de directorios include el include de DEVCPP.
Citar
 
 
0 #2 Luis 28-10-2019 17:12
Cito a may:
Hola, Buenas tardes.
Tengo problemas con el #include de mysql, me dice que no encuentra el archivo ni el directorio y ya hice todo lo que se tenia que hacer.
Espero y puedan ayudarme, gracias.

Prueba instalar DEV c++ 4.9. Eso me funcionó
Citar
 
 
0 #1 may 22-10-2018 15:56
Hola, Buenas tardes.
Tengo problemas con el #include de mysql, me dice que no encuentra el archivo ni el directorio y ya hice todo lo que se tenia que hacer.
Espero y puedan ayudarme, gracias.
Citar
 

Escribir un comentario


Código de seguridad
Refescar