Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2010, 09:30
gunhalcon
 
Fecha de Ingreso: noviembre-2007
Mensajes: 21
Antigüedad: 17 años, 1 mes
Puntos: 0
problema de memoria con mysql en c

Hola estoy haciendo un programa en c que se conecta a una base de datos mysql, y tengo un problema cuando recojo las filas de la consulta, os lo explico, primero pongo el código:


Código:
#include <iostream>
#include <mysql.h>

using namespace std;

int main(int argc, char** argv) {

    MYSQL *conexion;
    MYSQL_RES *result;
    MYSQL_ROW row;
    //MYSQL_FIELD *fields;
    
    unsigned int num_fields=0,i=0;
    my_ulonglong num_rows;
    const char *consulta = "SELECT id,name,phone,email FROM users";

    conexion = mysql_init(NULL);
    if (!mysql_real_connect(conexion, "iphost", 
	"user", "pass", "database", 0, NULL, 0)){
        cout<<stderr<<" Failed to connect to database: Error: ";
        cout<<endl<<mysql_error(conexion);
    }
    //if (mysql_real_query(conexion, consulta,strlen(consulta))!=0){
    if (mysql_query(conexion, consulta)!=0){
        cout<<"Error: mysql_real_query ha fallado en la consulta:"
	cout<<consulta<<endl;
    }
    result = mysql_store_result(conexion);
    if (result){ //Hay filas que devolver
        num_fields = mysql_field_count(conexion);
        num_rows = mysql_num_rows(result);
        while(i<25){
            i++;
            cout<<i<<endl;
        }
        int j=0;
        while(row = mysql_fetch_row(result)){
            j++;
            cout<<"La fila es "<<j<<endl;
        }
        while(i<50){
            i++;
            cout<<i<<endl;
        }
           
        mysql_free_result(result);
    }
    else {
        if (mysql_errno(conexion)){
           cout<<stderr<<"Error: "
           cout<<mysql_error(conexion)<<endl;
        }
        else if (mysql_field_count(conexion) == 0){
            // El query no ha devuelto nada
            cout<<"El query no ha devuelto nada";
        }

    }
    
    mysql_close(conexion);
    
    return 0;
    
}


y el código de salida es:


Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
La fila es 4199291
La fila es 2280744
La fila es 1628938179
La fila es 1629738798
La fila es 1629738792
La fila es 1629738793
La fila es 1629738794
/cygdrive/C/Program Files/NetBeans 6.9.1/ide/bin/nativeexecution/dorun.sh: line
33:  4068 Segmentation fault      (core dumped) sh "${SHFILE}"
Press [Enter] to close the terminal ...
tengo un problema en la línea while (row = mysql_fetch_row(result))
pero no entiendo que le puede pasar para que me haga eso con la variable j, que es un simple entero, estoy desquiciado, necesitro vuestra ayuda!!

Muchas gracias