
La distribución estándar de MySQL incluye las librerías necesarias para conectarse a la base de datos desde un cliente escrito en lenguaje C, con la misma facilidad que desde un script Perl o PHP.
Previamente, para desarrollar un programa en C, deberemos haber instalado el entorno de desarrollo habitual: compilador gcc, utilidad make, etc…
Adicionalmente, deberemos instalar el paquete de desarrollo de cliente de MySQL, que incluye las librerías y ficheros header (*.h) necesarios:
1 2 3 |
# apt-get install libmysqlclient-dev |
A continuación, escribimos el programa de ejemplo «conexion_mysql.c», con el siguiente contenido (sustituyendo el literal «PASSWORD» por la contraseña del usuario root):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/* Sencillo programa C que establece una conexión a un servidor de base de datos MySQL */ #include <stdlib.h> #include <stdio.h> #include <mysql.h> main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "PASSWORD"; /* Poner la contraseña */ char *database = "mysql"; conn = mysql_init(NULL); /* Conectarse a la base de datos */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* enviar la consulta SQL */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); /* imprimir los nombres de las tablas */ printf("Tablas en la base de datos 'mysql':\n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s \n", row[0]); /* liberar los recursos y cerrar la conexion */ mysql_free_result(res); mysql_close(conn); } |
Para compilar el programa, debemos pasar al compilador una serie de opciones que incluyen las referencias a las librerías y a los directorios en donde se encuentran los ficheros header. El paquete de desarrollo de cliente MySQL que hemos instalado incluye una utilidad «mysql_config» que genera la correspondiente lista de opciones a pasar al compilador. Haciendo uso de la misma, podemos compilar el programa de ejemplo con un comando de la forma:
1 2 3 |
$ gcc -o conexion_mysql $(mysql_config --cflags) $(mysql_config --libs) conexion_mysql.c |
Y por último, podemos comprobar el resultado ejecutando el programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$ ./conexion_mysql Tablas en la base de datos 'mysql': columns_priv db event func general_log help_category help_keyword help_relation help_topic host ndb_binlog_index plugin proc procs_priv proxies_priv servers slow_log tables_priv time_zone time_zone_leap_second time_zone_name time_zone_transition time_zone_transition_type user |