Dúvila sobre querys SQL não serem executadas

0 respostas
Andre_Rosa

Olá,
Eu tenho o seguinte código:

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

/* Algumas variáveis globais */
int opc;
int opc2;
int sexo3;
char buff[256];
char sexo [5];
char nome[150];

	
	int cadastra();
	MYSQL conexao;
	
int main()
{
	

	mysql_init(&conexao);
	if(mysql_real_connect(&conexao, "localhost","root", 
	"root", "agenda",  0, NULL, 0))
	{
		printf("Conectado com sucesso!\n");
		cadastra();
		mysql_close(&conexao);
	}
	else
	{
		printf("Houve uma falha ao tentar conectar! \n");
		printf("Erro: %d %s\n",mysql_errno(&conexao), 
		mysql_error(&conexao));
	}
	return (0);
}

int cadastra()
{
	printf("\n\n\t\tMenu:\n");
	printf("\t\t--------------\n");
	printf("\t\t[1] Inserir\n"
	"\t\t[2] Buscar\n"
	"\t\t[3] Listar\n"
	"\t\t[4] Remover\n"
	"\t\t[0] Sair\n"
	"\t\t\t>> ");

	scanf("%d",&opc);

	// "limpa" o buff
	memset(buff, 0x0, sizeof(buff));
	switch(opc)
	{
		case 0:
			getchar();
		break;

		case 1:
			/* Cadastro */
			printf("Nome: ");
			scanf("%s",&nome);
			printf("Sexo: (M/F) ");
			scanf("%s",&sexo);
			
sprintf(buff, "INSERT INTO aprendendo(nome, sexo) values('%s','%s');", nome, sexo); 
mysql_query(&conexao,buff);
			
			printf("O contato %s foi cadastrado com sucesso!\n",nome);

		break;

		case 2:
			/* Buscar */
			printf("Digite o nome: ");
			scanf("%s",&nome);
			printf("Resultados para '%s':\n",nome);
			sprintf(buff, "SELECT * from aprendendo where nome = '%s';", nome);
			mysql_query(&conexao,buff);
			
		break;
	
		case 3:
			/* Listar */
			printf("Selecione um filtro:\n ");
			printf("\t\t[1] Listar tudo\n");
			printf("\t\t[2] Filtrar por sexo\n");
			printf("\t\t\t>> ");
			scanf("%d",&opc2);
			switch(opc2)
			{
				case 1:
					/* Lista tudo */
					printf("\t\tListando tudos cadastros:\n");
					printf("\t\t-----------------------\n");
					mysql_query(&conexao,"SELECT * from aprendendo;");
					
				break;
				
				case 2: 
					/* Filtra por sexo */
					printf("Selecione um sexo:\n ");
					printf("\t\t[1]  Masculino  (M)\n");
					printf("\t\t[2]  Feminino   (F)");
					printf("\n\t\t\t>> ");
					
					scanf("%d",&sexo3);
					
					switch(sexo3)
					{
						case 1:
							mysql_query(&conexao, "SELECT * from aprendendo where sexo = 'M';");
							
						break;
						
						case 2:
							mysql_query(&conexao, "SELECT * from aprendendo where sexo = 'F';");
							
						break;
						
						default:
					/* Opção inválida */
					printf("Opcao invalida! \n");
					return EXIT_FAILURE;
				}
				break;
					
					break;
					
				default:
					/* Opção inválida */
					printf("Opcao invalida! \n");
					return EXIT_FAILURE;
				break;
			}
					
			
		break;
		
		case 4:  
			printf("Digite o nome a ser removido: ");
		break;

		default:
			printf("Opcao invalida! \n");
			return EXIT_FAILURE;
		break;
		}
		
	return (0);
}

Este compila sem problemas, apenas com alguns warnings:

main.c: In function ?cadastra?:
main.c:52: warning: incompatible implicit declaration of built-in function ?memset?

devido a linha:

memset(buff, 0x0, sizeof(buff));

O que acontece é que o conteúdo do case 2 e do 3 não funcionam. Daí, tentei limpar o buffer (buff) com a função memset(), mas mesmo assim não funcionou. Alguém tem idéia do que pode ser ?

Obrigado.

Criado 31 de outubro de 2010
Respostas 0
Participantes 1