Foros del Web » Programación para mayores de 30 ;) » C/C++ »

c++ y MySQL

Estas en el tema de c++ y MySQL en el foro de C/C++ en Foros del Web. Hola tengo un problema empiezo en esto de C++, tengo conocimientos en PHP y Delphi, también un poco de Java, pero ahorita tengo un problema: ...
  #1 (permalink)  
Antiguo 14/10/2011, 17:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta c++ y MySQL

Hola tengo un problema empiezo en esto de C++, tengo conocimientos en PHP y Delphi, también un poco de Java, pero ahorita tengo un problema:

Necesito una aplicación en c++ que lea datos de una base de MySQL, uno de estos datos es un Blob type_data=252 de Mysql.

Que he realizado:

1 Encontré un compilador en Ubuntu que se llama Code::Blocks

2 Instale el compilador

3 Como necesito que sea gráfico utilizo WxWidget y para esto instale el WxFormBuilder

4 Investigue como conectarme a Mysql así que logre hacer el import del <mysql.h>

5 Hice una prueba de la siguiente manera

Código:

void SaVL_BitraFrame::btn1_clic(wxCommandEvent &event)
{

    mysql_init(&mysql);
    connection = mysql_real_connect(&mysql,"localhost","root","*****","base_prueba",0,0,0);
    if (connection == NULL)
    {
       label1->SetLabel(wxT( "Error de conexión" ));
    }
    else
    {
        label1->SetLabel(wxT("Conexión exitosa"));

        char query[200];
        sprintf(query , "Select dato from data_blobs");

        query_state = mysql_real_query(connection,query,strlen(query));

        if (query_state !=0)
        {
            label1->SetLabel(wxT("Error en el query"));
        }
        else
        {
          result = mysql_use_result(connection);
          int count=0;
          MYSQL_FIELD *fields;
          fields = mysql_fetch_fields(result);
          while ( ( row = mysql_fetch_row(result)) != NULL )
            {

    

               int xresult= fields[0].type;


              //Todo funciona bien, el problema es que necesito el dato de row
              //en una arreglo de bytes, ya que es un blob
             //cuando realizo la siguiente instrucción me regresa cadena vacía 
            //Con un size de cero

           std::string Dato_Blob=row[0];


             //Alguna idea de como leerlo

               count ++;
                wxString cuenta= wxString::Format(wxT("%i"),count);
              Refresh();
                Update();
              label1->SetLabel( ToWxString<char, wchar_t>(resultado));
          }
        }

    }


}

Lo he intentado de varias maneras pero ya me canse de buscar
  #2 (permalink)  
Antiguo 15/10/2011, 18:41
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: c++ y MySQL

Para mandar la consulta, puedes usar , MYSQL_Real_Query, así

Código C++:
Ver original
  1. mysql_real_query(&mysql,consulta,strlen(consulta));
Donde le pasas por referencia le objeto mysql, y en este caso consulta y el largo de la misma, que es un char con la sentencia mysql a buscar


Prueba usar MYSQL_RES con un puntero, yo apuntas a mysql_store_result con el objeto mysql que lo pasas por referencia, así
Código C++:
Ver original
  1. MYSQL_RES *res = mysql_store_result(&mysql);

Y después usa MYSQL_ROW para recibir los datos, así

Código C++:
Ver original
  1. MYSQL_ROW row;

Y la repetitiva sería algo así

Código C++:
Ver original
  1. while((row = mysql_fetch_row(res))){}
O sea vas a repetir mientras que no sea null el row.



Saludos, Cualquier cosa a las órdenes.
  #3 (permalink)  
Antiguo 17/10/2011, 09:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: c++ y MySQL

De echo así estoy realizando los querys, el problema es que el dato en row me devuelve cadena vacía.. no se por que, si es otro tipo diferente a Blob, si puedo leer el resultado del query en la variable Blob

Etiquetas: funcion, mysql, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:43.