Qt连接MySQL数据库
前提条件
-
下载MySQL
msi下载链接: MySQL官网下载,安装教程: 详解2020MySQL安装(图文教程);
免安装版下载链接MySQL官网下载。
我采用的是msi安装方式,安装目录为D:\Program Files\MySQL(后面用到) -
下载Qt
推荐使用镜像下载:清华镜像 ;
也可直接用网盘下载:
链接:https://pan.baidu.com/s/1Op_xKpx5OdtdSCDy2eyDEA
提取码:p1od下载步骤推荐qt 5.12.1 下载安装详细教程
连接数据库
测试连接
首先新建一个空Qt项目,新建一个C++ source文件
在mysqlconnect.pro末尾添加
QT += widgets gui
QT += sql
通过编译代码
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QApplication>
int main(int argc,char* argv[])
{
QApplication a(argc,argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //连接的MYSQL的数据库驱动
db.setHostName("localhost"); //主机名
db.setPort(3306); //端口
db.setDatabaseName("database"); //数据库名
db.setUserName("root"); //用户名
db.setPassword("*********"); //密码
db.open();
//测试连接
if(!db.open())
{
qDebug() << "不能连接";
}
else
{
qDebug() << "连接成功";
}
db.close();
return a.exec();
}
出现没有加载驱动 “mysql drives not load”
查看驱动
运行代码(新建项目与文件同上一步)
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<"Avaliable drivers;";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver,drivers)
qDebug()<<driver;
return a.exec();
}
运行后如出现
说明没有连接MySQL的driver,进行下一步安装MySQL驱动
安装MySQL驱动
需要
- D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin里有libmysql.lib和libmysql.dll。
找到D:\Program Files\MySQL\MySQL Server 8.0\lib下的两个文件libmysql.lib,libmysql.dll,将其复制到D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin文件夹下(其他编译文件夹如msvc2017也可试试复制过去)
- D:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers里有qsqlmysql.dll(看到其他教程还需要qsqlmysqld.dll,但是我这里只要一个好像也能运行)
用Qt打开D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql的mysql.pro,
在末尾添加
INCLUDEPATH += "D:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "D:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
DESTDIR = "../mysql/mysqlDll" # 设置编译好的qmysql.dll放置的目录,倒也可以不添加试试
打开Qt5.14.2(MinGW 7.3.0 64-bit) promt
切换到D:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,执行
qmake mysql.pro
nmake
nmake release
- a. 如遇到两个错误:
1.Cannot read H:/qtsqldrivers-config.pri: No such file or directory;
2.Project ERROR: Library ‘mysql’ is not defined.
第一个错误:将qsqldrivebase.pri的第四行改为
include(./qtsqldrivers-config.pri)
因为qtsqldrivers-config.pri在mysql上一级目录sqldrives能找到,是文件位置的不对,只需要修改到上一级目录即可
第二个错误:将mysql.pro的"QMAKE_USE += mysql"直接在前面添加#注释掉。
- b. Cannot run compiler 'cl’
往环境变量添加D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64(我的vs安装目录)
- c. fatal error U1073: 不知道如何生成“D:/Program\”
这是由于
INCLUDEPATH += "D:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "D:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
这一部分的空格问题。
可以把MySQL文件夹先从Program Files文件夹移出来(因为不好直接将Program Files的空格去掉),我移到D盘,然后将MySQL文件夹后的文件夹全都去掉空格
修改mysql.pro变成
INCLUDEPATH += "D:/MySQL/MySQLServer8.0/include"
LIBS += "D:/MySQL/MySQLServer8.0/lib/libmysql.lib"
如果最后全部编译成功后可以看到MysqlDll文件夹下有qsqlmysql.dll
将qsqlmysql.dll复制到D:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers下
再次测试连接
查看驱动
完结撒花