domingo, 21 de marzo de 2010

Realizar una conexion a MySQL desde un programa en C

Esto es algo que no quiero que se me pierda.

Requisitos previos:

  • mysql: cliente de MySQL
  • mysql-devel: Paquete de desarrollo
  • mysql-server: Solo si el servidor de MysQL esta en nuestra maquina (en este ejemplo usaremos localhost)
  • gcc: para poder realizar la compilación



Conectarse a Mysql desde un programa en C no es muy dificil, de hecho pareciera incluso un poco más facil que usando un programa en otro lenguaje como Java, aunque claro, si quisiera conectarme a otra base de datos seguramente necesitaria hacer muchos cambios a menos que se aplique una interfaz de acceso a datos. Pero bueno, ahí va el ejemplo:






/* Un programa muy simple para conectar a la base de datos de mysql
* Compilar usando:
* gcc -o ejecutable $(mysql_config --cflags)
programa.c $(mysql_config --libs)

* */

#include <mysql.h>
#include <stdio.h>

int main()
{

MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

char *server = "localhost";
char *user = "administrador";
char *password = "soyTuPadre";
char *database = "mascotas";

conn = mysql_init(NULL); // se crea una conexion con mysql

/* Ahora se intenta una conexión real
usando los datos para autenticación */

if (!mysql_real_connect(conn, server, user, password,
database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
return 1;
}

/* Ahora enviamos una consulta a mysql */
if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%s\n", mysql_error(conn));
return 1;
}

// recibimos el resultado en una estructura de datos.
res = mysql_use_result(conn);

/* Ahora imprimimos los resultados */
printf("Las tablas de nuestra base de datos de MySQL son:\n");

while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s \n", row[0]);
}

/* liberamos la memoria asignada a los resultados y
cerramos la conexión */

mysql_free_result(res);
mysql_close(conn);

return 0;
}



En Mysql hispano podemos encontrar el detalle de las funciones que maneja el API para el lenguaje C.

No hay comentarios:

Publicar un comentario