[C con Clase] otro error mysql-c

duna.montero en ldasistencia.com duna.montero en ldasistencia.com
Mie Jun 13 12:54:17 CEST 2007



Hola.
No sé qué me pasa, pero estoy teniendo muchos problemas con la conexión
entre estructuras en c y asociar los datos que obtengo de la base de datos
mysql.
os pongo el código y el error a ver si alguie me puede ayudar, ya que se lo
agradecería muchiiiiiiiiiisimo...

struct final_l_titulo
{
        char* titulo;
        struct final_l_titulo * next;
};


recibo la consulta desde recibida

final_l_titulo* consulta_buno_1_titulo (char * recibida)
{
        int i, j, l, k;
        MYSQL_RES *res1;
        MYSQL_FIELD *columna;
        MYSQL_ROW row;
        unsigned long *lon;
        MYSQL * base;


        final_l_titulo *consulta1, *primero, *anterior;



        printf ("\nllego a consultar bases\n");



                if(!(base = mysql_init(NULL)))
                {
                        // Imposible crear el objeto myData

                }
                else
                        printf ("La conexion se ha hecho bien \n");



                if(!mysql_real_connect(base, NULL, NULL, NULL, "uno",
MYSQL_PORT, NULL, 0))
                {

                        printf ("Imposible conectar con servidor mysql en
el puerto %d", MYSQL_PORT);
                        mysql_close(base);

                //        return 1;
                }

                else
                        printf ("La conexión a la base de datos se ha hecho
OK\n");

                if(mysql_select_db(base, "uno"))
                {
                        // Error al seleccionar base de datos.
                        printf ("ERROR: %s",mysql_error(base));
                        mysql_close (base);
                        rewind(stdin);
                        getchar();
                //        return 2;
                }
                 if(mysql_query(base, recibida))
                 {
                        // Error al realizar la consulta:
                        printf( "ERROR: %s\n",mysql_error(base));
                        mysql_close(base);
                        rewind(stdin);
                        getchar();

                }


                 if((res1 = mysql_store_result(base)))
                 {
                        i = (int) mysql_num_rows(res1);
                        j = (int) mysql_num_fields(res1);

                        printf ("\nEl número de resultados es: %d\n", i);

                        columna = mysql_fetch_fields(res1);

                        if (i!=0)
                        {


                        primero=NULL;
                        anterior=NULL;

                        for(l = 0; l < i; l++)
                        {


                                consulta1= (final_l_titulo *)malloc (sizeof
(final_l_titulo));

                                row = mysql_fetch_row(res1);
                                lon = mysql_fetch_lengths(res1);

                                printf ( "Registro no. %d", l+1);
                                // Mostrar cada campo y su longitud:
                                k=0;

                                consulta1->titulo = row[k];        AQUI ES
DONDE ME DA EL ERROR
                                printf ("\n%s", consulta1->titulo);
                                printf (" ");
                                k++;

                                consulta1->next=NULL;

                                if (primero == NULL)
                                        primero=consulta1;

                                else
                                        anterior->next=consulta1;

                                anterior=consulta1;


                        }
                        }


                 }
                 if (i != 0)
                 {
                        consulta1->next=NULL;
                        consulta1=primero;
                 }
                 if (i==0)
                 {
                         consulta1=NULL;
                 }

                 //mysql_free_result(res1);
                 mysql_close(base);


                 return (consulta1);

}



y el error que me da cuando hago un debug es este:

Unhandled exception in proyecto.exe : 0x000000005 Access violation

Supongo que será que hay algo que no estoy asociando bien, pero se supone
que cuando en el debug pongo row [k] me pone que tiene el valor titulo (que
es como he llamado al titulo del libro.)

La consulta que hago es select titulo from libros where cl = 123;

Muchas gracias a todos.
Un saludo





Más información sobre la lista de distribución Cconclase