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;
}
Pergunta
Mauro Thiago
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
============
ARQ bancoDB.hpp ============Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.