QT 6.2.2 与以前q编译mysql的方法大不一样,以前是通过pro工程编译,新版的是要通过cmake编译mysql。具体编译过程如下:
准备工作
安装qt 6.2.2
官方下载地址:
安装mysql 8.0.27
官方下载地址 :
下载 420m的安装包
安装vs 2019 专业版
官方安装地址:
编译安装过程
准备工作安装好以后,按照如下提示键入代码即可。
以管理员身份进入powershell
# 进入源码目录 cd D:\alantop_dir\alantop_sde\QT\6.2.2\Src\qtbase\src\plugins\sqldrivers # 准备工作 mkdir build cd build # 进入cmd, 调用VS环境进行构建 cmd @REM 调用VS环境 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvar; @REM configure(DEBUG) D:\alantop_dir\alantop_sde\QT\6.2.2\msvc2019_64\bin\q .. -G Ninja -DCMAKE_INSTALL_PREFIX="D:\alantop_dir\alantop_sde\QT\6.2.2\msvc2019_64" -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.0\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.0\lib\libmy; @REM 构建(DEBUG) cmake --build . @REM 安装(DEBUG) cmake --install . @REM configure(RELEASE) D:\alantop_dir\alantop_sde\QT\6.2.2\msvc2019_64\bin\q .. -G Ninja -DCMAKE_INSTALL_PREFIX="D:\alantop_dir\alantop_sde\QT\6.2.2\msvc2019_64" -DMySQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Server 8.0\include" -DMySQL_LIBRARY="C:\Program Files\MySQL\MySQL Server 8.0\lib\libmy; -DCMAKE_BUILD_TYPE=Release @REM 构建(RELEASE) cmake --build . @REM 安装(RELEASE) cmake --install .
测试是否成功
拷贝C:\Program Files\MySQL\MySQL Server 8.0\lib\libmy到项目生成目录下。.
用qt建立新的工程,在工程文件里加入模块sql,选择使用qmake编译,编译器选vc2019
键入如下代码:
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QSqlQueryModel> #include <QSqlDatabase> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); void connectDB(); QSqlDatabase db; QSqlQueryModel model; private: Ui::Widget *ui; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QSqlDatabase> #include <QDebug> #include <QMessageBox> #include <QSqlError> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); connectDB(); } Widget::~Widget() { delete ui; } void Widget::connectDB() { qDebug() << QSqlDatabase::drivers(); db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123"); db.setDatabaseName("world"); if ()==true) { qDebug() << "ok"; } else { QMessageBox::warning(this, "fail", db.lastError().text()); } model.setQuery("select * from city"); ui->tableView->setModel(&model); }
调试可以输出 QList("QSQLITE", "QMARIADB", "QMYSQL", "QODBC", "QPSQL") ,读取到数据库,即可代表成功。
qt 6.2.2 用vc2019 编译MySQL 8.0.27编译视频:
qt5系列配置文档和视频
QT 5.15.2 配置MySQL 8.0 文档
QT5.15.2 配置mysql 8.0视频教程