1:下载并安装mysql
配置环境变量:在用户与系统中的path路径分别加入mysql bin文件夹的地址,我的如下:
D:\mySQL\MySQL Server 8.0\bin
这一步是为了打开cmd直接输入: mysql -u root -p就可以登陆操作数据库,不然只能在D:\mySQL\MySQL Server 8.0\bin打开cmd操作数据库。

2:在QT中编译mysql驱动:
在QT的mysql.pro文件中
输入以下代码:注意用$$quote(地址)是为了忽视地址中的空格,这样在QT调用的时候就不会因为空格找不到文件。

    win32:LIBS += -L$$quote(D:/mySQL/MySQL Server 8.0/lib) -llibmysql
    INCLUDEPATH += $$quote(D:/mySQL/MySQL Server 8.0/include)
    DEPENDPATH += $$quote(D:/mySQL/MySQL Server 8.0/include)

括号中的地址填你之际的安装地址。

同时注释掉文件中

    #QMAKE_USE += mysql

用MINGW64编译文件,在QT同级目录下出现plugins文件夹。

3:将mysql数据库动态文件及编译文件粘贴到QT
将plugins文件夹生成的qsqlmysql.dll 与qsqlmysql.dll.debug复制到
D:\QT\set_qt\5.14.1\mingw73_64\bin

将动态库文件mysql/lib中的libmysql.dll复制到QT的MINGW64编译器的bin目录下

4:连接数据库:
新建文件,在.pro文件中
QT += core gui sql
在用到数据库的.h文件中

include < QSqlDatabase >

在.cpp中连接数据库:

1
2
3
4
5
6
7
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL","d");
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("119568yhl");
db.setDatabaseName ("info");// 这里 info 是实例化数据库的名称,需要手动实例化。
qDebug()<<"连接数据库";
QSqlQuery query(db);

d是连接名,这是一个程序在不同处对不同的数据库进行操作,就应该给每个数据库定义连接名
如果只是有一处需要动用数据库,可以
1
2
3
4
5
6
7
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("119568yhl");
db.setDatabaseName ("info");// 这里 info 是实例化数据库的名称,需要手动实例化。
qDebug()<<"连接数据库";
QSqlQuery query;

在cmd登录实并例化数据库方法

第1步参考视频:
https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from=333.880.my_history.page.click

第2,3步参考视频:
https://www.bilibili.com/video/BV1Jk4y167tt/?spm_id_from=333.880.my_history.page.click&vd_source=b6da26061de3320a8170666f06381a91

    show databases;

看到数据库里的存储区

    use info

进入其中的一个存储区

    show tables;

可以看到区里具体的表

    select * from 表名

可以看到表里有啥

tips:

QString sql1 = QString("create table %1(id double,x double,y double,h double,v double,t double)").arg(a);

这样可以实现动态设置表名,例如如果需要把每个for循环采集到的数据做成一个表,那么就可以这样动态设置表名
表名必须是字母!
也可以用函数获取当前的绝对时间,arg(时间),来实现动态设置表名