Ir ao conteúdo
  • Cadastre-se
Adriano94

C++ consulta mysql

Posts recomendados

Boa tarde, estou tentando realizar uma consulta em meu banco de dados em que ela tem que retornar se os dados existem no banco de dados ou não.

 

http://pastebin.com/Rs9e7xa0

 

Até agora só consegui realizar a conexão com o banco de dados, mas não consegui fazer a consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta utilizar a string da query assim: 

    sprintf(cmdSQL, "SELECT * FROM  usuarios WHERE  login = '%s'", cliente);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
27 minutos atrás, 1freakday disse:

Tenta utilizar a string da query assim: 

    sprintf(cmdSQL, "SELECT * FROM  usuarios WHERE  login = '%s'", cliente);

 

 

Ele sempre retorna o mesmo valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, dei mas umas pesquisadas e percebi que a função mysql_query() sempre vai retornar um valor no caso se foi feito ou nao a query(No caso se houver erro de sintaxe ela Retorna 1 e em caso de sucesso retorna 0), mas não vai informar se o "usuário" foi ou não encontrado, então com mais umas pesquisar verifiquei que apos executar o mysql_query() se houver resultado positivo, a funcao mysql_store_result() armazena o resultado da consulta, e a função mysql_fetch_row() vai nos dar o nome do usuário, ai nos só precisamos verificar com o nome do cliente, usando strcmp(), que informamos e obtemos se existe ou não o usuário, exemplo:     

        //VARIAVEIS ADICIONAIS
	    MYSQL_RES *resp;
	    MYSQL_ROW resget;
	    char resgetBuffer[128];
		
		//ENVIAR CONSULTA DO COMANDO ACIMA
        //SE HOUVER ERRO DE SYNTAX ELE RETORNA ERRO
        //MAS SE HOUVER OU NAO A CONSULTA, ELE NAO VAI IDENTIFICAR ISSO.
        //Perceba que nao usei ! na frente pois erro retorna 1
        if (mysql_query(&Conect, cmdSQL)){
            printf("ERRO!\n",cmdSQL);
            mysql_close(&Conect);
            getchar();
            return 0;
        }else{
            //Obter a resposta da consulta, se existir
            resp = mysql_store_result(&Conect);
            if(resp){
                printf("Resultado da consulta recebida!\n");
                printf("Verificando se usuario existe!\n");
                resget = mysql_fetch_row(resp);
                if(resget != NULL){
                    strcpy(resgetBuffer,resget[0]);
                    if(strcmp(resgetBuffer,cliente) == 0 && strlen(resgetBuffer) > 0)
                        printf("%s encontrado!\n",resgetBuffer);
                } else printf("Cliente nao encontrado!\n");
            }else printf("Resultado da consulta nao recebida!\n");

            //Libera o resultado da consulta
            mysql_free_result(resp);
        }

 

Fonte de consulta: https://www.vivaolinux.com.br/artigo/Usando-MySQL-na-linguagem-C?pagina=4

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, 1freakday disse:

Então, dei mas umas pesquisadas e percebi que a função mysql_query() sempre vai retornar um valor no caso se foi feito ou nao a query(No caso se houver erro de sintaxe ela Retorna 1 e em caso de sucesso retorna 0), mas não vai informar se o "usuário" foi ou não encontrado, então com mais umas pesquisar verifiquei que apos executar o mysql_query() se houver resultado positivo, a funcao mysql_store_result() armazena o resultado da consulta, e a função mysql_fetch_row() vai nos dar o nome do usuário, ai nos só precisamos verificar com o nome do cliente, usando strcmp(), que informamos e obtemos se existe ou não o usuário, exemplo:     


        //VARIAVEIS ADICIONAIS
	    MYSQL_RES *resp;
	    MYSQL_ROW resget;
	    char resgetBuffer[128];
		
		//ENVIAR CONSULTA DO COMANDO ACIMA
        //SE HOUVER ERRO DE SYNTAX ELE RETORNA ERRO
        //MAS SE HOUVER OU NAO A CONSULTA, ELE NAO VAI IDENTIFICAR ISSO.
        //Perceba que nao usei ! na frente pois erro retorna 1
        if (mysql_query(&Conect, cmdSQL)){
            printf("ERRO!\n",cmdSQL);
            mysql_close(&Conect);
            getchar();
            return 0;
        }else{
            //Obter a resposta da consulta, se existir
            resp = mysql_store_result(&Conect);
            if(resp){
                printf("Resultado da consulta recebida!\n");
                printf("Verificando se usuario existe!\n");
                resget = mysql_fetch_row(resp);
                if(resget != NULL){
                    strcpy(resgetBuffer,resget[0]);
                    if(strcmp(resgetBuffer,cliente) == 0 && strlen(resgetBuffer) > 0)
                        printf("%s encontrado!\n",resgetBuffer);
                } else printf("Cliente nao encontrado!\n");
            }else printf("Resultado da consulta nao recebida!\n");

            //Libera o resultado da consulta
            mysql_free_result(resp);
        }

 

Fonte de consulta: https://www.vivaolinux.com.br/artigo/Usando-MySQL-na-linguagem-C?pagina=4

 

Perfeito, muito boa sua explicação, eu poderia ter lido aquele tópico mil vezes e não entenderia. Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Adriano94 Há um tempo atrás andei testando a lib mysql, da uma olhada nesse código: https://github.com/CiroboyBR/syscad

Compartilhar este post


Link para o post
Compartilhar em outros sites
Este tópico está parado há muito tempo. Certifique-se que a sua mensagem tem a ver com o tema sendo discutido. Obrigado.

Junte-se à conversa

Você pode postar agora e cadastrar-se depois. Se você tem uma conta, faça o login para postar.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restore formatting

  Só é possível ter até 75 emoticons.

×   O link foi automaticamente convertido para mostrar o conteúdo.   Clique aqui para mostrá-lo como link comum

×   Seu texto anterior foi restaurado.   Limpar o editor

×   You cannot paste images directly. Upload or insert images from URL.






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!