MySQL C ++ Connector дает сбой моему приложению в ResultSet-> getString ()
Это'я снова, наверное, задаю вопросы Noob C ++
У меня были ОСНОВНЫЕ головные боли, заставляющие работать чертовски (извините за язык) коннектор MySQL C ++. Я неЯ не знаю, написано ли это плохо или что-то еще, но по своему опыту я покаУ меня никогда не было столько проблем, чтобы заставить что-то работать.
Как бы то ни было, я получил его для подключения и выдачи исключений при неудачном соединении / запросе, что для меня довольно большая вещь: U: P. Фактическая проблема возникает из-за получения результата запроса. Независимо от того, что я делаю, мое приложение всегда вылетает: S
Я использовал 32-разрядный установщик и libmysql.dll / lib с 32-разрядного сервера MySQL (так как ям, составив 32-битное приложение, я понял, что это правильно)
Вот'какой-то код, чтобы вы могли представить, что яя говорю о
DBManager.h
#ifndef DBMANAGER_H
#define DBMANAGER_H
#define CPPCONN_PUBLIC_FUNC
#define CPPCONN_LIB_BUILD True
#include
#include "mysql_connection.h"
#include "mysql_driver.h"
#include
#include
#include
#include
#include
class DBManager
{
public:
static DBManager* Instance();
bool Query(const char* Query);
void Connect(const char* DbHost, unsigned short DbPort, const char* DbUser, const char* DbPass, const char* DbName);
bool ValidCredentials(const char* Username, const char* Password);
void ManageException(sql::SQLException &e);
~DBManager();
protected:
static DBManager* pInstance;
private:
DBManager() {};
DBManager(DBManager const&){};
DBManager& operator=(DBManager const&){};
sql::mysql::MySQL_Driver* driver;
sql::Connection *Con;
sql::PreparedStatement *pstmt;
sql::ResultSet *res;
sql::Statement *stmt;
bool isConnected;
};
#endif
А теперь файл cppDBManager.cpp
#include "DBManager.h"
DBManager* DBManager::pInstance = NULL;
DBManager* DBManager::Instance()
{
if (!pInstance)
{
pInstance = new DBManager();
}
return pInstance;
}
bool DBManager::Query(const char* Query)
{
return true;
}
DBManager::~DBManager()
{
delete Con;
delete pstmt;
delete res;
delete stmt;
}
void DBManager::ManageException(sql::SQLException& e)
{
if (e.getErrorCode() != 0) {
std::cout < "# ERR: SQLException in " < __FILE__;
std::cout < "(" < __FUNCTION__ < ") on line " < __LINE__ < std::endl;
std::cout < "# ERR: " < e.what();
std::cout < " (MySQL error code: " < e.getErrorCode();
std::cout < ", SQLState: " < e.getSQLState() < " )" < std::endl;
}
}
void DBManager::Connect(const char* DbHost, unsigned short DbPort, const char* DbUser, const char* DbPass, const char* DbName)
{
try {
driver = sql::mysql::get_mysql_driver_instance();
std::string connDSN = "tcp://" + std::string(DbHost) + ":3306";
Con = driver->connect(connDSN, sql::SQLString(DbUser), sql::SQLString(DbPass));
Con->setSchema(sql::SQLString(DbName));
isConnected = true;
std::cout