====== Para acceder a MySQL usando C ======
===== Introducción =====
Con este tutorial le presento a la comunidad cómo acceder a una base de datos MySQL desde el lenguaje de programación C y sin usar demasiadas dependencias, con solo ''libmysqlclient''. Espero que les sirva de utilidad a los que necesitaban este tipo de documentación y asi seguir contribuyendo con la comunidad de SL y ayudar a los que no cuentan con INTERNET.
===== Configuración =====
Primero debemos comprobar que tengamos instalada las librerías de diseño ''*-dev'' para poder acceder desde C/C++ a MySQL.
mysql_config --libs
Debería aparecer algo como esto:
-Wl, -Bsymbolic-funciones –L/usr/lib/mysql -lmysqlclient rdynamic
En caso de que marque que no esta instalada la librería la instalamos con el siguiente comando:
sudo apt-get install libmysqlclient-dev
mysql_config --cflags -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Ya que verificamos e instalamos lo que necesitamos para el enlace entre MySQL y C, procedemos a la creación de la base de datos:
create database prueba;
use prueba;
create table datos (id int auto_increment not null primary key, nombre varchar(40), edad int);
insert into datos values (null, 'Alma Hernandez', 28), (null, 'Jose Sanchez', 39), (null, 'Martin loera', 25), (null, 'Leonardo Cortez', 26), (null, 'Gustavo Romero', 25);
===== Programación y compilación =====
Proseguimos a crear el código:
/* librerías que usaremos */
#include /* libreria que nos permite hacer el uso de las conexiones y consultas con MySQL */
#include /* Para poder usar printf, etc. */
int main()
{
MYSQL *conn; /* variable de conexión para MySQL */
MYSQL_RES *res; /* variable que contendra el resultado de la consuta */
MYSQL_ROW row; /* variable que contendra los campos por cada registro consultado */
char *server = "localhost"; /*direccion del servidor 127.0.0.1, localhost o direccion ip */
char *user = "root"; /*usuario para consultar la base de datos */
char *password = "root"; /* contraseña para el usuario en cuestion */
char *database = "prueba"; /*nombre de la base de datos a consultar */
conn = mysql_init(NULL); /*inicializacion a nula la conexión */
/* conectar a la base de datos */
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
{ /* definir los parámetros de la conexión antes establecidos */
fprintf(stderr, "%s\n", mysql_error(conn)); /* si hay un error definir cual fue dicho error */
exit(1);
}
/* enviar consulta SQL */
if (mysql_query(conn, "select * from datos"))
{ /* definicion de la consulta y el origen de la conexion */
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
printf("ID\tNombre\t\tedad\n");
while ((row = mysql_fetch_row(res)) != NULL) /* recorrer la variable res con todos los registros obtenidos para su uso */
printf("%s\t%s\t%s \n", row[0],row[1],row[2]); /* la variable row se convierte en un arreglo por el numero de campos que hay en la tabla */
/* se libera la variable res y se cierra la conexión */
mysql_free_result(res);
mysql_close(conn);
}
Compilamos con:
gcc -o Consulta $(mysql_config --cflags) Consulta.c $(mysql_config -–libs)
===== Comprobación =====
Ejecutamos:
./Consulta