无法连接到QMYSQL数据库

时间:2015-10-06 17:25:24

标签: c++ mysql qt

我试图在我的应用程序中连接到QMYSQL数据库,但每次使用此代码时都会出现异常"无法打开DB"被扔了。 Mysql服务器正在运行,没有任何阻塞连接。难道我做错了什么?

这是我来自的课程。 .H:

class DatabaseConnection
{
public:
    DatabaseConnection(){};
    virtual ~DatabaseConnection() {};

protected:
    void createConnection
        (const char* dbtype, const char* connection,
        const char* hostname, const char* dbName, const char* username,
        const char* password, int port);

    void closeDb();
    bool isOpen() const;
    QSqlDatabase& getDb(const char* connection);

private:
    QSqlDatabase db; 

};

的.cpp

#include "DatabaseConnection.h"

void DatabaseConnection::createConnection(const char* dbtype, const char* connection,
const char* hostname, const char* username, const char* dbName, const char* password, int port)
{
    db = QSqlDatabase::addDatabase(dbtype, connection);

    db.setHostName(hostname);
    db.setDatabaseName(dbName);
    db.setUserName(username);
    db.setPassword(password);
    db.setPort(port);
}


void DatabaseConnection::closeDb()
{
    db.close();
}

bool DatabaseConnection::isOpen() const
{
    return db.isOpen();
}

QSqlDatabase& DatabaseConnection::getDb(const char* connection)
{
    return db;
}

这就是我如何使用它。 .H:

class AuthorizeUser : private DatabaseConnection
{
public:
    explicit AuthorizeUser() 
    {
        createConnection("QMYSQL", "", "", "users", "root", "root", 3306);
    };
    ~AuthorizeUser() { closeDb(); };
    ....

的.cpp

#include "Authorization.h"


void AuthorizeUser::checkCredentials(const QString& m_login, const QString& m_password)
{

    if (!isOpen())
        throw "Cannot open DB!";


    getUsersQuery.exec("SELECT * FROM users");

    ....

1 个答案:

答案 0 :(得分:0)

  • 您将空字符串设置为主机。试试“localhost”。
  • 您将“root”设置为数据库名称,将“users”设置为用户,这听起来不对
  • 您必须按open()
  • 中所述addDatabase()数据库
  

在使用连接之前,必须初始化它。例如,调用setDatabaseName(),setUserName(),setPassword(),setHostName(),setPort()和setConnectOptions()中的部分或全部,最后调用open()。