2015-10-06 32 views
0

我試圖連接到我的應用程序中的QMYSQL數據庫,但每次使用此代碼異常「無法打開數據庫」引發。 Mysql服務器正在運行,沒有任何阻塞連接。難道我做錯了什麼?無法連接到QMYSQL數據庫

這是我來自的類。 .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"); 

    .... 
+0

您應該嘗試分析'QSqlDatabase'中的'lastError' –

回答

0
  • 您設置一個空字符串作爲主機。嘗試「localhost」。
  • 要設置「根」作爲數據庫名稱和「用戶」作爲用戶,這聽起來錯
  • addDatabase()描述您必須open()數據庫:

使用連接之前,必須被初始化。例如,調用setDatabaseName(),setUserName(),setPassword(),setHostName(),setPort()和setConnectOptions()中的一些或全部,最後調用open()。