[ Foro de C ]

Conectar C con MySQL

06-Apr-2012 22:46
Sam Garcia
4 Respuestas

Buen dia para todos.

Ultimamente he estado trabajando con MySQL y ahora me ha surgido la duda de como trabajar con este gestor de bases de datos desde el lenguaje C. Investigando por internet encontre este codigo para hacer la conexicion, por supuesto ya tengo instalado el MySQL, el compilador -GCC- y tengo las librerias :

/* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>
main() {
  MYSQL *conn;
  MYSQL_RES *res;
  MYSQL_ROW row;
  char *server = "localhost";
  char *user = "root";
  char *password = "PASSWORD"; /* set me first */
  char *database = "mysql";
  conn = mysql_init(NULL);
  /* Connect to database */
  if (!mysql_real_connect(conn, server,
        user, password, database, 0, NULL, 0)) {
     fprintf(stderr, "%s\n", mysql_error(conn));
     exit(1);
  }
  /* send SQL query */
  if (mysql_query(conn, "show tables")) {
     fprintf(stderr, "%s\n", mysql_error(conn));
     exit(1);
  }
  res = mysql_use_result(conn);
  /* output table name */
  printf("MySQL Tables in mysql database:\n");
  while ((row = mysql_fetch_row(res)) != NULL)
     printf("%s \n", row[0]);
  /* close connection */
  mysql_free_result(res);
  mysql_close(conn);
}



Lo probe y funciono, la prengunta ahora es como seria trabajar con los resultados que cada consulta, con que funciones podria hacerlo, y si es que se puede hacer con las funciones de C o se hace con C++.

Gracias de antemano.


10-Apr-2012 23:00
Nacho Cabanes (+83)

No acabo de entender la pregunta. No se trata de pensar "qué hago ahora" sino "necesito esto... ¿cómo lo consigo?"

Por ejemplo, si creas una tabla con datos de tus amigos, podrías crear una consulta que te permita buscar los que contienen cierto texto en su nombre, o los que han nacido entre ciertas fechas, etc.

Pero insisto: una vez que sabes obtener datos, lo que tienes que preguntarte es qué información (útil) podrías obtener de ellos.


12-Apr-2012 20:03
Sam Garcia

Buen dia.

Profesor Nacho, en si mi pregunta es ¿Como trabajo con los resultados de las consultas que haga en la base de datos?
Por ejemplo podria obtener ciertos datos con un SELECT... e imprimirlo en pantalla asi como sucede en el codigo que publique. Pero como podria hacer para manipular esos datos para algo mas que mostrarlos en pantalla, por ejemplo si quisiera pasarlos a un archivo de texto o un archivo binario creado por mi para respaldar mi informacion.
Pensando en ello se me estaba ocurriendo talvez utilizar un sprintf() para pasar a una cadena lo que me devuelva la consulta, pero quiero saber si talvez hay por ahi alguna otra forma de hacerlo.

Gracias.


13-Apr-2012 08:50
Nacho Cabanes (+83)

Para una copia de seguridad yo usaría un fichero de texto, no uno binario, de modo que se pueda analizar con cualquier herramienta de forma sencilla.

Es más, yo volcaría cada dato a una línea con un fprintf o un fputs, en vez de formatear varias líneas en una con sprintf:

(...)

 if (mysql_query(conn, "select nombre, apellidos from personas"))  
 {
     fprintf(stderr, "%s\n", mysql_error(conn));
     exit(1);
 }

 res = mysql_use_result(conn);

 FILE* ficheroSalida;
 ficheroSalida = fopen("copiaSeguridad.txt", "wt");

 while ((row = mysql_fetch_row(res)) != NULL)
 {
     fputs(row[0], ficheroSalida);  /* Nombre */
     fputs("\n", ficheroSalida);
     fputs(row[1], ficheroSalida);  /* Apellidos */
     fputs("\n", ficheroSalida);
 }
 fclose(fichero);  
 mysql_free_result(res);
 mysql_close(conn);
}


13-Apr-2012 18:47
Sam Garcia

Mil gracias por la pronta respuesta profesor Nacho.

Voy a implementar esto en un programa que trabaje con una base de datos personal.

Saludos!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)