Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

herberthleao

Problema com MySQL Connector C++

Recommended Posts

Bom dia pessoal!

 

Sou iniciante em C++ e há um tempinho atrás desenvolvi uma pequena aplicação com banco de dados usando o conector C++ do MySQL. Mas recentemente tentei fazer uns testes com esse mesmo conector e não obtive o mesmo resultado.

Fiz testes básicos como conexão, inserts e selects, com linkagem tanto estática, quanto dinâmica. Ele compila normalmente, o problema é que na hora da execução, o programa não retorna nenhuma saída, nem sequer uma exceção é lançada. No NetBeans dá erro de execução. No prompt o programa simplesmente para de funcionar.

Pesquisei muito sobre o problema, tanto no Google quanto na documentação oficial, mas sem resultado.

Uma coisa estranha que também notei, é que mesmo linkando a biblioteca estática, durante a execução o programa solicita a biblioteca dinâmica.

 

Alguém aí já usou essa biblioteca e já se deparou com esse problema? Alguém tem alguma ideia do que esteja causando esse erro?

Já estou tentando resolver esse problema há alguns dias e até agora, nada!

 

Estou usando:

MySQL 5.6

Connector C++ 1.1

NetBeans 8.0.2

MinGW-w64 (já tentei com Visual C++ 2010)

MSYS

Windows 7 x86

 

O último teste que fiz foi o seguinte:

#include <iostream>
 
#include <cppconn/prepared_statement.h>
#include <cppconn/connection.h>
#include <cppconn/statement.h>
#include <cppconn/exception.h>
#include <cppconn/driver.h>
 
using namespace std;
using namespace sql;
 
int main(int argc, char** argv) {
 
try {
 
Driver *driver = get_driver_instance();
Connection *connection = driver->connect("tcp://127.0.0.1:3306", "root", "5432");
connection->setSchema("test");
Statement *stmt = connection->createStatement();
ResultSet *res = stmt->executeQuery("SELECT * FROM `messages`");
 
while(res->next()) {
 
cout << res->getInt(1) << endl;
 
}
 
delete res;
delete stmt;
delete connection;
 
} catch(SQLException &e) {
 
cout << e.what() << endl;
 
}
 
return 0;
}
Agradeço antecipadamente qualquer ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algumas perguntas:

1-tem certeza que o protocolo da string de conexão é TCP e não http? Geralmente quando se usa uma função pra conectar se passa somente o IP, sem indicar protocolo. Caso VC estivesse usando uma string de conexão direta (http://username:senha@ip:porta) VC indicaria o protocolo.

2-tem certeza de que o nome da tabela deve ser escrito entre aspas simples? Geralmente isso indica uma string no SQL.

3- indicou o local dos headers com a flag -I (I maiúsculo)?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá _Isis_!


1. Usei o protocolo TCP pois segui os exemplos da documentação do conector. Mesmo assim, acabei de executar testes com o protocolo HTTP e também sem declarar o protocolo explicitamente. Mas sem resultado.

2. Tentei sem os apóstrofos, mas nada.

3. Sim, tenho certeza de que estou indicando o caminho dos headers.


O mais engraçado é que nem sequer uma exceção é lançada, mas o programa sempre para de funcionar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.