Ir ao conteúdo

Posts recomendados

Postado

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

 

Postado

@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");
    }

 

Postado

Poderia postar seu código completo? Bem como o código SQL utilizado para criar a tabela no banco de dados?

Tente armazenar o RG em uma string.

Postado

 

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

Postado

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

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...