我正在使用MySQL cpp连接器制作一个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方法都已实现,但我无法理解为什么该函数不是,如果它是基本的。
提前谢谢你, 维克托
答案 0 :(得分:1)
今天下午我遇到了同样的问题。现在我找到了解决问题的方法,希望我的经验对您有所帮助: 我正在使用ubuntu 10.10并通过synaptic包管理器安装mysql connector / c ++。我找到了动态的lib文件(libmycppconn.so.xxxx) - 它的大小是几十亿字节。不小心,我在http://dev.mysql.com/downloads/connector/cpp/1.0.html获得了一个已编译的lib文件,它的大小是9兆字节或更少,这意味着它可能包含比前一个更多的文件。所以我决定删除synaptic,并编译源代码,然后make / make安装它。完成后,图书馆找到了工作。 也许你可以尝试编译源代码并安装它。
祝你好运, 僖