Este ejercicio esta realizado con Ubuntu 10.10 y Mysql Server 5.x
Para hacer una conexión a una base de datos con mysql necesitamos hacer uso del api para mysql y c, para lo cual verificamos si existen las librerías para este soporte con
mysql_config –libs
lo cual nos aroja como resultado
-Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient
en caso de qeu 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, 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);
proseguimos a la parte código:
//librerias que usaremos
#include
#include < mysql.h >
#include < stdio.h >
int main() {
MYSQL *conn; //variable de conexion 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 conexion
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) { // definir los arametros de la conexion antes establecidos
fprintf(stderr, "%s\n", mysql_error(conn)); // si hay un error definir cual fue dicho error
exit(1);
}
/* send SQL query */
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 conexion
mysql_free_result(res);
mysql_close(conn);
}
compilamos con
gcc -o Consulta $(mysql_config --cflags) Consulta.c $(mysql_config –libs)
ejecutamos
./Consulta
en un siguiente posteo haremos una estructura para poder almacenar todo el resultado de la base de datos y poder manipular completamente los datos.