MySQL c ++ не реализовано исключение - PullRequest
0 голосов
/ 03 ноября 2011

Я делаю программу на С ++ с коннектором MySQL cpp и застрял в:

sql::MethodNotImplementedException on 
MySQL_Connection::prepareStatement(const sql::SQLString& sql, int autoGeneratedKeys)

Я много искал, но ничего не мог найти ... Я действительно не понимаючто происходит.Вот полный исходный код класса, который не работает:

#ifndef __DATABASE_H_
#define __DATABASE_H_

#include <string>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

#define MYSQL_HOSTNAME "localhost"
#define MYSQL_USERNAME "dummy"
#define MYSQL_PASSWORD "password"

using namespace std;
using namespace sql;

class Database {
public:
    Database();

    static bool login(const string &user, const string &password);

    static Connection *createConnection();
};

#endif

И источники:

Connection *Database::createConnection(){
    mysql::MySQL_Driver *driver = mysql::MySQL_Driver::Instance();

    return driver->connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD);
}

bool Database::login(const string &user, const string &password){
    bool ret;
    Connection *con = createConnection();
    PreparedStatement *pstmt = con->prepareStatement("SELECT * FROM Players WHERE Username = ? AND Password = ?"); // here's where it fails ._.

    pstmt->setString(1, user);
    pstmt->setString(2, password);

    ResultSet *res = pstmt->executeQuery();
    ret = res->next();

    res->close();
    delete(res);
    pstmt->close();
    delete(pstmt);
    con->close();
    delete(con);

    return ret;
}

Когда я компилирую и связываю его, я добавляю -lmysqlcppconn как библиотеку.

Я проверил ссылку на MySQL c ++, и они говорят, что не все методы JDBC реализованы, но я не могу понять, почему эта функция не реализована, если она базовая.

Заранее спасибо, Víctor

1 Ответ

1 голос
/ 26 декабря 2011

У меня была та же проблема сегодня днем.И теперь я нашел способ ее решить, надеюсь, что мой опыт вам пригодится: я использую ubuntu 10.10 и устанавливаю mysql connector / c ++ с помощью менеджера пакетов synaptic.И я нашел динамический файл lib (libmycppconn.so.xxxx) - его размер составляет десятки килобайт.Случайно, я получаю уже скомпилированный файл lib в http://dev.mysql.com/downloads/connector/cpp/1.0.html,, его размер больше или меньше на 9 мегабайт, что означает, что он может содержать намного больше, чем предыдущий.Поэтому я решил удалить синаптическую версию, скомпилировать исходный код и сделать / сделать установку.После того, как я это сделал, библиотеки работают.Может быть, вы можете попробовать скомпилировать исходный код и установить его.

Удачи, Си

...