libmysql tutorial (resolvido)

Iniciado por Edimartin, 06 de Janeiro de 2011, 16:35

tópico anterior - próximo tópico

Edimartin

Olá galera do forum.

O meu problema é:

Eu estou programando com a libmysql (porque a libmsql++ não rodou) e eu estou com um pequeno problema.

Eu consegui fazer tudo. Criação de base de dados, criação de tabela e alocação de dados. O problema é na hora de ler os dados.
Eu tenho uma tabela com nomes e codigos. Eu preciso ler o código do nome tal (coisa simples).

Eu uso o comando: mysql_query (&con, "SELECT code FROM tabela WHERE nome LIKE 'fulano'" ); Eu tenho um usuario fulano. Ele possui um code que é um inteiro. Eu preciso escrever esse code na tela.

Procurei em um monte de sites mas eles nunca falam como carregar o resultado. Só avisam como descobrir quantos resultados são, número de bites e avisam que em uma parte do cógido o resultado será carregado.

Alguém sabe como eu posso carregar para a memória, quaquer dado lido pela função SELECT.

Edimartin

Descobri na internet. Hoje eu fiquei só olhando páginas no google com a busca libmysql c e na terneira página eu encontrei esse link.

http://www.bdjogos.com/biblioteca_conteudo.php?id=27

Então eu consegui resolver o meu problema.

O código é:


//Variaveis para as selecoes

   //Resultados
   MYSQL_RES* result;
   //Tipos dos resultados
   MYSQL_FIELD *field;
   //Dados dos resultados
   MYSQL_ROW row;
   //retorno do comando
   int retorno=0;

//Seleciona tudo na tabela
   //
   if(comand){
      printf("\nComando == '%s'"
             ,comand
             );

      //Efetua a chamada
      retorno=mysql_query (&con, (char*)    "SELECT * FROM tabela" );
      if(retorno){
         printf(" NAO OK");
         printf("\nRetorno == %d"
                ,retorno
                );
      }
      else{
         printf(" OK");

         printf("\nCarregando dado selecionado");
         //
         //Busca o resultado
         result = mysql_store_result(&con);
         while(result){
            //enquanto os resultados forem alocados. Eles sao lidos
            //printf("\ncarrega resultado");
            unsigned int cont=1u;

            //Carrega a row
            while ( (row = mysql_fetch_row(result) )){
               //Carrega o tipo
               printf("\nResultado %u"
                      ,cont
                      );
               for (unsigned int i=0 ; i < mysql_num_fields(result); i++){
                  field = mysql_fetch_field_direct(result, i);
                  printf("\n   '%s' =", field->name);
                  printf("= '%s' ",row[i]);
               }
               cont++;
            }

            //libera o resultado
            mysql_free_result(result);
            result=NULL;

            //Depois ele bosca o proximo resultado
            result = mysql_store_result(&con);
         }


         //}
         //
         printf("\n");
      }

      //deleta o comando
      delete comand;
   }
   comand=NULL;

   getch();