Acceder a MySQL usando C

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:

Consulta.c

/* librerías que usaremos */
#include <mysql.h> /* libreria que nos permite hacer el uso de las conexiones y consultas con MySQL */
#include <stdio.h> /* 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

Fuente: Blog de Hugo4295


elav

elav: Blog Personal / Twitter / G+ / Usuario de ArchLinux. Informático, melómano, blogger y diseñador web. Administrador y Fundador de DesdeLinux.net.


6 comentarios en “Acceder a MySQL usando C

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *

  1. Buena esa, guardado en mi arsenal de scripts y tutoriales en consola! +1 para ti socio…

    1/6
  2. Hola muchas felicidades de todo lo que haye en la web respecto a este tema lo tuyo fue lo mas cercano a la solucion. solo una pequeña duda, porque no me jenera el ejecutable??

    a la hora de comílar no me marca ningun error pero no me genera el ./ser4

    2/6
  3. Alguna idea de como hacerlo en Fedora?

    3/6
  4. no estoy en desacuerdo con compartir la informacion pero si en que no se coloquen los derechos de autor ya que este ejemplo fue hecho por mi desde el 2011 y aqui esta la direccion de la fuente original

    http://hugo4295.blogspot.mx/search?q=MYSQL

    4/6
    • No hay problema Victor, pero si te fijas no tomé el artículo de tu sitio, sino de otro donde lastimosamente no pusieron la fuente. No obstante, ahora mismo edito el artículo.. ;)

      5/6
  5. excelente compartir conocimiento una gran libertad

    6/6

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *