Ir para conteúdo
Fórum Script Brasil

Mauro Thiago

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Mauro Thiago

Mauro Thiago's Achievements

0

Reputação

  1. Olá pessoal do fórum, consegui solucionar o problema. Isso acontece devido ao fato de ficar lixo no buffer da máquina. Então antes de efetuar a parada para digitar alguma informação solicitada pelo programa, faço uma limpeza do buffer tal como: pelo que consta funciona nas duas plataformas getchar(); cin.getline... Em Windows: fflush(stdin); Em Linux: __purge(); (com dois underline mesmo) ;) :rolleyes:
  2. Olá galera, insiro meu primeiro post no fórum, agradeço desde já a todos por participar juntamente com todos. O que acontece, montei uma classe para mysql, no qual faço conexão, possui alguns métodos por enquanto que são conectar, consultar, menu. o que acontece é que quando seleciono a opção de consulta, ele em vez de parar na linha cin.getline para inserir uma consulta (tipo select...) ele passa direto e não dá opção de digitar. Só consigo fazer ele parar para eu digitar, quando passo parametro ";" no cin.getline (query,256,';'); quando deixo cin.getline (query,256); ele passa batido. alguém saberia o que pode ser? Abaixo o código que estou usando. ARQ bancoDB.cpp ============ #include <windows.h> #include "bancoDB.hpp" #include <mysql/mysql.h> #include <iostream> using namespace std; // parametros da conexao com o BD BancoDB::BancoDB() : host("localhost"),user("root"),pass(""),database("petrobras") {}; // destrutor da classe BancoDB::~BancoDB(){}; void BancoDB::menu() { cout << "Banco de Dados\n"; cout << "==============\n\n"; cout << "1 - Consultar\n"; cout << "2 - Sair\n"; cout << "Digite o numero do que deseja acessar: "; }; // metodo para conectar ao banco void BancoDB::conectar() { MYSQL *sock; sock= mysql_init(NULL); sock = mysql_real_connect(sock, host.c_str(), user.c_str(), pass.c_str(), database.c_str(),0,NULL,0); conexao = sock; if (conexao) { printf("sock ok!\n"); } else { printf ("Handle falhou!\n"); } }; //metodo para efetuar consulta no Banco void BancoDB::consultar() { //variaveis usadas no programa para retornar resultados da pesquisa MYSQL_RES *result; MYSQL_ROW row; int i; int loop; // pega dados de input system("cls"); cout << "Banco de Dados\n"; cout << "==============\n\n"; cout << "Digite sua QUERY: "; cin.getline (query,256,';'); // executa letras maiuscula para minuscula for (loop = 0; query[loop] !=0; loop++) query[loop] = toupper(query[loop]); // condicao para consulta if(mysql_query(conexao,query)) { printf("===Foi encontrado um erro na query==="); cout << "\n"; cout << "ERRO: ===============================\n"; cout << mysql_error(conexao) << "\n"; cout << "====================================="; } else { result = mysql_store_result(conexao); if (result) { while ((row = mysql_fetch_row(result)) != NULL) { for (i=0; i < mysql_num_fields(result); i++) { if ((row[i] != NULL) && (row[i] != "")) printf(" %s ||", row[i]); } printf("\n"); } } } cout << "\n\n"; system("pause"); }; int main() { // variavel para interacao no sistema int operador = 1; // variavel para guardar a query de consulta char sql[80]; // criar objeto de conexao BancoDB minhaconexao; // executa conexao com o Banco minhaconexao.conectar(); // operador = 0, encerra o programa while (operador!=0) { // limpa tela system("cls"); //executa menu minhaconexao.menu(); //captura numero selecionado cin >>(operador); // verifica qual opcao do menu deseja selecionar switch ( operador ){ // ===== efetua a consulta ===== // // ===> case 1: minhaconexao.consultar(); operador = 1; break; // <=== // ===== efetua a consulta ===== // // ===== sair ===== // // ===> case 2: return 0; break; // <=== // ===== sair ===== // default: operador = -1; } } // executa metodo da classe BancoDB minhaconexao.conectar(); // executa consulta no banco minhaconexao.consultar(); // executa pausa no sistema plataforma windows system("pause"); // destroi a conexao minhaconexao.~BancoDB(); // sai do sistema return 0; } ARQ bancoDB.hpp ============ #include <mysql/mysql.h> #include <iostream> class BancoDB { private: std::string host; std::string user; std::string pass; std::string database; MYSQL *conexao; char *query; public: BancoDB(); ~BancoDB(); void conectar(); void consultar(); void menu(); };
×
×
  • Criar Novo...