Ir ao conteúdo

Posts recomendados

Postado

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.

Postado
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.

Postado

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 1
Postado
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
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!