miércoles, 27 de abril de 2011

MySql y C en Linux

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 //libreria que nos permite hacer el uso de las conexiones y consultas con mysql

#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.