[英]Cannot connect to QMYSQL Database
I'm trying to connect to QMYSQL database in my app, but every time when use this code exception "Cannot open DB" is thrown. 我试图连接到我的应用程序中的QMYSQL数据库,但是每次使用此代码时,都会引发异常“无法打开DB”。 Mysql server is running, nothing is blocking connection.
Mysql服务器正在运行,没有任何东西阻止连接。 Am I doing something wrong?
难道我做错了什么?
This is class that i'm deriving from. 这是我派生的课程。 .h:
。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 .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;
}
And that's how I'm using it. 这就是我的使用方式。 .h:
。H:
class AuthorizeUser : private DatabaseConnection
{
public:
explicit AuthorizeUser()
{
createConnection("QMYSQL", "", "", "users", "root", "root", 3306);
};
~AuthorizeUser() { closeDb(); };
....
.cpp .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");
....
open()
the database as described in addDatabase()
: addDatabase()
描述open()
数据库: Before using the connection, it must be initialized.
在使用连接之前,必须将其初始化。 eg, call some or all of setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort(), and setConnectOptions(), and, finally, open().
例如,调用部分或全部setDatabaseName(),setUserName(),setPassword(),setHostName(),setPort()和setConnectOptions(),最后调用open()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.