私は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