Mostrando entradas con la etiqueta printf. Mostrar todas las entradas
Mostrando entradas con la etiqueta printf. Mostrar todas las entradas

sábado, 19 de febrero de 2011

C - Acceder a una base de datos en mysql desde C (2 de 2. Conectandose a mysql)

Como conectarnos a una instancia de mysql-server desde un programa en C.

Un ejemplo sencillo conectándonos a una base de datos.

#include 
//agregamos la cabecera de mysql
#include 

//definimos una macro
#ifdef __linux__
    #define clrscr system("clear");
#else
    #define clrscr system("cls");
#endif

int main(int argc, char *argv[])
    {
    clrscr;
    //declaramos los objetos 
    //conexión, que será nuestro enlace 
    //abierto con la base de datos
    MYSQL *conn;
    //conjunto de resultados (o recordset), 
    //donde volcaremos los resultados de las 
    //consultas que realicemos
    MYSQL_RES *res;
    //fila, para poder trabajar de forma 
    //individual con los registros obtenidos de una consulta.
    MYSQL_ROW row;

    //definimos las variables que utilizaremos 
    //en las llamdas a los métodos
    char *server="localhost";
    char *user="miusuario";
    char *password="micontraseña";
    char *database=argv[1]; //aqui utilizamos el primer 
    //parámetro obtenido desde la linea de comando,

    //nos aseguramos de que conn no esta enlazando a nada    
    conn = mysql_init(NULL);

    //realizamos la conexión y comprobamos 
    //que no se hayan producido errores
    if (!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //asignamos una consulta a la conexión 
    //y comprobamos que no se hayan producido errores
    if (mysql_query(conn, argv[2]))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //volcamos el resultado de la consulta en el recordset
    res = mysql_use_result(conn);

    printf("Resultado de la consulta: \n");


    /*Recorremos el recordset:
        con mysql_fetch_row, avanzamos uno a uno
    los registros del recordset y volcamos la salida 
    en el row, Cuando no quedan más registros devuelve NULL.
    El row es un array que contiene los campos de la consulta.
    */
    while ((row = mysql_fetch_row(res)) != NULL)
        {
        printf("%s - %s \n", row[0],row[1]);
        }

    //liberamos el recordset.
    mysql_free_result(res);
    //cerramos la conexión al servidor mysql
    mysql_close(conn);
    return 0;
    }


Requisitos antes de compilar.

Información obtenida aquí:
http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html

viernes, 18 de febrero de 2011

C - Macros

Una macro es una directiva que nos permite 
substituir un fragmento de código por una palabra 
que elijamos, y allí donde en el código del 
programa escribamos esa palabra, el compilador 
interpretará que hemos escrito el código correspondiente.

Así, después de haber definido la macro MIMACRO

#define MIMACRO printf("%s","Instruccion printf a traves de una macro")

siempre que en el codigo escribamos

MIMACRO;

se ejecutará la instrucción printf.

También podemos definir parámetros en una macro:

#define MIMACRO2(x) printf("%s%s\n","En realidad lo que quería decir era esto:",x)

y llamarla de esta forma:

MIMACRO2("estamos aquí, haciendo como que programamos.");



Nota: atención al ";" que debe seguir a as instrucciones en C. 
Tenemos la opción de escribirlo en la macro, evitando tener
 que escribirlo cada vez que la llamemos. Las dos opciones son válidas

Definición:
#define MIMACRO printf("%s","Instruccion printf a traves de una macro");
Llamada:
MIMACRO

Definición:
#define MIMACRO printf("%s","Instruccion printf a traves de una macro")
Llamada:
MIMACRO;