Ir ao conteúdo
  • Cadastre-se
Matheus Miranda Souza

C Consulta no banco de dados

Recommended Posts

Boa noite, pessoal estou desenvolvendo um programa em c que usa o banco mysql, ja consigo inserir dados no banco normalmente, agora como esta no código abaixo eu n sei como armazenar o resultado do meu select que vai sei o nome de um aluno que tem x Rg, em uma variável para depois exibir para o usuário. poderiam me ajudar ?

			char query[100];
            MYSQL conexao;
            char res[255];
            system("cls");
            system("cls");
            printf("Digite seu RG:");
            scanf("%d", &rgPessoa);

                mysql_init(&conexao);
                        if ( mysql_real_connect(&conexao, "localhost", "root", "", "teatro", 0, NULL, 0) ){
                            sprintf(query,"select tb_aluno_nome from tb_aluno where tb_aluno_rg = '%i';",rgPessoa);
                       //o que eu devo fazer aqui ??
                        }else{
                            printf("Falha de conexao\n");
                            printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
                        }
                        system("pause");
                        return(0);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vale a pena dar uma consultada na documentação da API: https://dev.mysql.com/doc/refman/5.6/en/c-api-function-overview.html

 

Dá uma olhada nesse código: https://github.com/CiroboyBR/syscad

Compartilhar este post


Link para o post
Compartilhar em outros sites

@CiroboyBR dei uma olhada no seu código e tentei fazer o seguinte:

MYSQL_RES *result;
  MYSQL_ROW row;
  int i, num_fields, RG;
  
  printf("Digite o seu rg:\n");
  scanf("%i",&rg)

  mysql_init(&conexao);

  if(conecta_ao_db() == 1) {

    if (mysql_query(&conexao, "select tb_aluno_nome from tb_aluno where tb_aluno_rg = '%i';"),RG != 0) {
      printf("\nFalha de cconsulta");
    }
    result = mysql_store_result(&conexao);
    if (result == NULL) {
      printf("\nFalha no result");
    }

    num_fields = mysql_num_fields(result);

    while ((row = mysql_fetch_row(result))) {
      for( i = 0; i < num_fields; i++) {
        printf("%s ", row[i] ? row[i] : "NULL");
        printf(" | ");
      }

      printf("\n");
    }
    printf("\n################# LISTA ####################\n");
    mysql_free_result(result);
  }
  mysql_close(&conexao);
}

mais por algum motivo ele apenas aparece a mensagem: Falha na consulta.

ja tentei colocar o rg da seguinte forma: 

if (mysql_query(&conexao, "select tb_aluno_nome from tb_aluno where tb_aluno_rg = '%i';",RG) != 0) {
      printf("\nFalha de cconsulta");
    }

porém n obtive resultado algum, poderia me dizer o que esta errado ?

 

Lembrando que casou eu insira o numero do rg manualmente do meu select funciona perfeitamente, ele me trás o nome do dono da quele rg, como no exemplo abaixo :

if (mysql_query(&conexao, "select tb_aluno_nome from tb_aluno where tb_aluno_rg = '548951546';") != 0) {
      printf("\nFalha de cconsulta");
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

@CiroboyBR , código completo:

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <locale.h>
#include <stdlib.h>


int main() {
    MYSQL conexao;
    MYSQL_RES *result;
    MYSQL_ROW row;
    int i, num_fields;
    int rg=999999999;
  	char query[150];
  	mysql_init(&conexao);
   	if ( mysql_real_connect(&conexao, "localhost", "root", "", "teatro", 0, NULL, 0) ){

        if (mysql_query(&conexao, "select tb_aluno_nome from tb_aluno where tb_aluno_rg = '%i';",rg)) {
        printf("\nFalha de cconsulta");
        }
        result = mysql_use_result(&conexao);
        if (result == NULL) {
          printf("\nFalha no result");
        }

        num_fields = mysql_num_fields(result);

        while ((row = mysql_fetch_row(result))) {
        for( i = 0; i < num_fields; i++) {
        printf("%s ", row[i] ? row[i] : "NULL");
      }
      }


   mysql_close(&conexao);
   system("pause");
   return(0);
}
}
create table tb_aluno
(
id int not null primary key auto_increment,
tb_aluno_nome varchar (128) not null,
tb_aluno_rg int not null,
tb_aluno_email varchar(128) not null,
tb_aluno_ra varchar(16) not null,
tb_aluno_tel varchar(21) not null
);

ja tentei com o rg como char ou int, mais não obtive sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Você tem que montar a string da query com o SPRINTF, depois de montada, você utiliza a string no mysql_query();

2 - Armazene tudo que for inserir/consultar/deletar no banco de dados em variáveis do tipo string.

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <locale.h>
#include <stdlib.h>

int main()
{
    MYSQL conexao;
    MYSQL_RES *result;
    MYSQL_ROW row;
    int i, num_fields;
    char rg[40] = "04512";
    char query[150];

    mysql_init(&conexao);

    if ( mysql_real_connect(&conexao, "127.0.0.1", "root", "", "teatro", 0, NULL, 0) )
    {
        sprintf(query, "select * from tb_aluno where rg = '%s'", rg);

        if (mysql_query(&conexao, query) != 0 )
        {
            printf("\nFalha de cconsulta");
        } else if (result == NULL)
        {
            printf("\nResultado vazio");
        }

        result = mysql_use_result(&conexao);
        num_fields = mysql_num_fields(result);

        while ((row = mysql_fetch_row(result)))
        {
            for( i = 0; i < num_fields; i++)
            {
                printf("%s ", row[i] ? row[i] : "NULL");
            }
        }

    }
    mysql_close(&conexao);

    return(0);
}

 

  • 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

×