Ir ao conteúdo
  • Cadastre-se
Adriano94

C++ consulta mysql

Recommended Posts

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);

 

  • Curtir 1

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

  • Curtir 2

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.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×