在Server端创建C++类DBOperate,注意要继承于QObject为了能够支持信号槽。
dboperate.h
#ifndef DBOPERATE_H
#define DBOPERATE_H
#include <QObject>
#include <QSqlDatabase> // 连接数据库
#include <QSqlQuery> // 数据库操作
class DBOperate : public QObject
{
Q_OBJECT
public:
explicit DBOperate(QObject *parent = nullptr);
static DBOperate& getInstance(); // 公用获取引用,实现单例模式
void init(); // 初始化函数,数据库连接
~DBOperate(); // 析构函数,关闭数据库连接
signals:
public slots:
private:
QSqlDatabase m_db; // 连接数据库
};
#endif // DBOPERATE_H
dboperate.cpp
#include "dboperate.h"
#include <QMessageBox>
#include <QDebug>
DBOperate::DBOperate(QObject *parent) : QObject(parent)
{
// 连接数据库
m_db = QSqlDatabase::addDatabase("QMYSQL"); // 连接的数据库类型
}
DBOperate &DBOperate::getInstance()
{
static DBOperate instance;
return instance;
}
// 数据库连接
void DBOperate::init()
{
m_db.setHostName("localhost"); // 数据库服务器IP
m_db.setUserName("root"); // 数据库用户名
m_db.setPassword("root"); // 数据库密码
m_db.setDatabaseName("networkdiskdb"); // 数据库名
if(m_db.open()) // 数据库是否打开成功
{
QSqlQuery query;
query.exec("select * from userInfo");
while(query.next())
{
QString data = QString("%1, %2, %3, %4").arg(query.value(0).toString()).arg(query.value(1).toString())
.arg(query.value(2).toString()).arg(query.value(3).toString());
qDebug() << data;
}
}
else
{
QMessageBox::critical(NULL, "数据库打开", "数据库打开失败");
}
}
DBOperate::~DBOperate()
{
m_db.close(); // 关闭数据库连接
}
参考解决方案:
QT连接mysql问题解决:QSqlDatabase: QMYSQL driver not loaded_程序白痴的博客-CSDN博客_qt连接mysql数据库时提示无驱动怎么解决
QSqlDatabase QMYSQL driver not loaded_白菜侠的博客-CSDN博客