Seguimos con la práctica del post anterior. El siguiente paso es instalar el codeblocks para escribir más cómodamente en Linux, y también libmysqlclient-dev, una librería de desarrollo que es la que incluye <mysql.h>.

Aparte de ello, necesitaremos otros servicios para conectarnos de forma remota, ya que por defecto la conexión no se permitirá.
Los datos de conexión son: Base de datos: aluBD, Usuario: alumno, Contraseña: alupass. Normalmente se tiene el mismo nombre para el usuario y la base de datos, aunque ahora lo hacemos con dos distintos para ver las diferencias.


Lo siguiente será conectarnos a la base de datos con mysql_real_connect().

Bueno, ahora que ya hemos comprobado que funciona, quedará ejecutar la consulta en sí.

Estéticamente feo de cojones, pero funcional.



Código completo
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main()
{
char *servidor = "192.168.137.114";
char *usuario = "alumno";
char *password = "alupass";
char *bd = "aluBD";
MYSQL *conexion = mysql_init(NULL);
MYSQL_RES *resultado;
MYSQL_ROW registro;
unsigned int num_campos;
int i;
char *consulta = "SELECT * FROM CLIENTES";
// Inicializamos la estructura
if (conexion == NULL) {
fprintf(stderr, "La inicialización de la estructura MYSQL* ha fallado. Posible falta de memoria \n");
return 0;
}
// Conectamos con la base de datos
if (mysql_real_connect(conexion, servidor, usuario, password, bd, 0, NULL, 0) == NULL) {
fprintf(stderr, "La conexión con el servidor ha fallado con el siguiente error: %s \n", mysql_error(conexion));
return 0;
}
// Consulta a realizar
if (mysql_query(conexion, consulta) != 0) {
fprintf(stderr, "La consulta ha fallado");
return 0;
}
// Almacenar en memoria uno a uno
if ((resultado = mysql_use_result(conexion)) == NULL) {
fprintf(stderr, "La obtención del resultado ha fallado \n");
return 0;
}
// Capturar el registro a usar
num_campos = mysql_num_fields(resultado);
while ((registro = mysql_fetch_row(resultado)) != NULL) {
for (i = 0; i < num_campos; i++) {
fprintf(stdout, " %s |", registro[i]);
}
}
printf("La versión actual del cliente MySQL es %s", mysql_get_client_info());
// Liberar memoria
mysql_free_result(resultado);
mysql_close(conexion);
return 0;
}
¡Salud y coding!