首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开与Qt/C++的数据库连接

问打开与Qt/C++的数据库连接
EN

Stack Overflow用户
提问于 2019-09-16 19:58:21
回答 1查看 477关注 0票数 0

我有MySQL Server8.0 (Workbanch),我正在尝试使用Qt/C++ (QSqlDatabase)打开一个数据库。但是db.open()总是返回false。为什么?我用的是user: root pass: mypass

代码语言:javascript
复制
Log from terminal:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL  
QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
db state:  false

paneldb.cpp

代码语言:javascript
复制
    #include "paneldb.h"
#include "ui_paneldb.h"

PanelDB::PanelDB(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::PanelDB)
{
    ui->setupUi(this);

    db.setHostName("localhost");
    db.setDatabaseName("testdb");
    db.setUserName("root");
    db.setPassword("mypass");

    bool ok = db.open();

    qDebug() << "db state: " << ok;
}

PanelDB::~PanelDB()
{
    delete ui;
}

paneldb.h

代码语言:javascript
复制
    #ifndef PANELDB_H
#define PANELDB_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QDebug>

namespace Ui {
class PanelDB;
}

class PanelDB : public QMainWindow
{
    Q_OBJECT

public:
    explicit PanelDB(QWidget *parent = nullptr);
    ~PanelDB();

private:
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    Ui::PanelDB *ui;
};

#endif // PANELDB_H

Pro文件:

代码语言:javascript
复制
QT       += core gui
QT       += sql

MYSQL日志:

代码语言:javascript
复制
mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
|   root@localhost |
+----------------+

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)

如何使用QT连接我的数据库?

EN

回答 1

Stack Overflow用户

发布于 2019-09-16 20:25:42

您必须确保mysql客户端dll位于您的路径中。如果你没有这个,那么你必须先在你的平台上安装它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57956380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档