0

私はMySQLcppコネクタを使用してc++プログラムを作成していますが、次のことに固執しています。

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

4

1 に答える 1

1

私は今日の午後同じ問題を抱えていました。そして今、私はそれを解決する方法を見つけました、私の経験があなたに役立つことを願っています:私はubuntu 10.10を使用していて、シナプスパッケージマネージャーによってmysqlconnector /c++をインストールしています。そして、動的libファイル(libmycppconn.so.xxxx)を見つけました。そのサイズは数十キロバイトです。誤って、 http://dev.mysql.com/downloads/connector/cpp/1.0.htmlでコンパイル済みのlibファイルを取得しました。そのサイズは、多かれ少なかれ9メガバイトです。つまり、前回のもの。そこで、シナプスを削除し、ソースコードをコンパイルして、make/makeでインストールすることにしました。私がこれを行った後、ライブラリは検索を実行します。たぶん、あなたはソースコードをコンパイルしてそれをインストールすることを試みることができます。

幸運、Xi

于 2011-12-26T10:26:22.930 に答える