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

sábado, 19 de febrero de 2011

C - mysql_mun_fields - numero de campos que contiene el resultado de una consulta hacia una conexión mysql

Cuando realizamos una consulta contra una conexión, podemos necesitar saber cuantos campos ha devuelto, por ejemplo, si queremos hacer un bucle  recorriendo todos los campos.

Aquí, conn es un objeto conectado a una base de datos mysql

    //realizamos la consulta
    if (mysql_query(conn, "consulta SQL"))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //volcamos el resultado en un recordset
    res = mysql_use_result(conn);

    //obtenemos el numero de filas

    printf("%d\n", mysql_num_fields(res));

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